例行性工作任务(定时任务)
1. at 命令:一次性定时任务(单一一次的任务)
核心用途:在未来某个特定时间执行一次命令或脚本,任务完成后自动清除。
具体用法
- 基础语法: at [时间参数] ,输入后进入交互模式,输入要执行的命令,按 Ctrl+D 退出。
- 常用时间格式:
- 绝对时间: at 14:30 (今天14:30,如果今天14:30已过就会在第二天的14:30执行)、 at 2024-12-31 23:59 (指定日期时间)
- 相对时间: at now + 10 minutes (10分钟后)、 at now + 2 hours (2小时后)
- 关键参数:
- -l :查看当前等待执行的 at 任务(等同于 atq )
- -d 任务编号 :删除指定 at 任务(等同于 atrm 任务编号 )
- -f 脚本文件 :直接执行指定脚本,无需交互(例: at 15:00 -f /home/script.sh )
2. crontab 命令:周期性定时任务
核心用途:按固定周期(如每天、每周)重复执行命令或脚本,适合长期规律任务。
具体用法
- 基础语法:
1. 编辑定时任务: crontab -e
2. 查看当前任务: crontab -l
3. 删除所有任务: crontab -r
- 任务配置格式(5个时间字段 + 命令):
分 时 日 月 周 要执行的命令/脚本
0-59 0-23 1-31 1-12 0-7 (0和7都代表周日)
- 特殊符号:
- * :任意值(例:小时位填 * 表示每小时)
- , :多个值(例:分钟位 0,30 表示0分和30分)
- - :范围(例:日期位 1-5 表示1到5号)
- / :间隔(例:小时位 */2 表示每2小时)
- 经典示例:
- 每天23点30分执行备份脚本: 30 23 * * * /home/backup.sh
- 每周一到周五8点执行启动脚本: 0 8 * * 1-5 /home/start.sh
- 每月1号0点清理日志: 0 0 1 * * rm -rf /var/log/old.log
练习:
1. 定时清理下系统临时文件,每周日晚上12:00 清理/tmp/*.log文件。
[root@localhost ~]# crontab -e
保存后退出
说明:0 0 * * 0 对应“分 时 日 月 周”,即每周日(周用0表示)0点0分执行 rm -f /tmp/*.log
2. 每周三和周五的下午4:30和晚上8:30 将当前用户家目录下的文件进行打包压缩压缩格式为gz。
[root@localhost ~]# crontab -e
说明: 30 16 * * 3,5 表示每周三、周五16点30分; tar -zcf 是“压缩并创建归档文件”,文件名含时间戳( date +\%Y\%m\%d_\%H\%M ),避免重复覆盖。
3. 5分钟后关闭防火墙