一次性计划任务
今晚23:30分自动重启网站服务
- 方法1
# at 23:30
at > systemctl restart httpd
at > 同时按下 Ctrl + D 组合键来结束编写计划任务
job 3 at Mon Apr 27 23:30:00 2017
- 方法2
# echo "systemctl restart httpd" | at 23:30
job 4 at Mon Apr 27 23:30:00 2017
查看刚刚创建的任务
# at -l
3 Mon Apr 27 23:30:00 2017 a root
4 Mon Apr 27 23:30:00 2017 a root
刚刚创建了2个一样的定时任务,删掉一个
// 删除序号3的定时任务
# atrm 3
// 再次查看
# at -l
4 Mon Apr 27 23:30:00 2017 a root
周期性定时任务
周期性地、有规律地执行某些具体的任务,依赖Linux系统的crond服务
命令 crontab -e
创建、编辑计划任务
命令 crontab -e -u <username>
编辑他人的计划任务
命令 crontab -l
查看当前计划任务
命令 crontab -r
删除某条计划任务
下图,使用crond服务设置任务的参数格式,注意的是,如果有些字段没有设置,则需要使用星号(*)占位,如图4-23所示
字段 | 说明 |
---|---|
分 | 取值为0~59的整数 |
时 | 取值为0~23的整数 |
日 | 取值为0~31的整数 |
月 | 取值为1~12的整数 |
星期 | 取值为0~7的任意整数,其中0与7均为星期日 |
命令 | 要执行的命令或程序脚本 |
输入 crontab -e 命令来创建计划任务:每周一、三、五的凌晨3点25分,重启网络服务
# crontab -e
no crontab for root - using an empty one
crontab: installing new crontab
# crontab -l
25 3 * * 1,3,5 systemctl restart httpd
- 除了用逗号(,)来分别表示多个时间段,例如“8,9,12”表示8月、9月和12月
- 还可以用减号(-)来表示一段连续的时间周期(例如字段“日”的取值为“12-15”,则表示每月的12~15日)
- 用除号(/)表示执行任务的间隔时间(例如“*/2”表示每隔2分钟执行一次任务)
在crond服务中,多条计划任务的命令语句,每行仅写一条
在crond服务的计划任务参数中,所有命令一定要用绝对路径的方式来写
获取文件的绝对路径,可用whereis命令进行查询
我们再添加一条计划任务,功能:每周一至周五的凌晨1点钟自动清空/tmp目录内的所有文件
# whereis rm
rm: /usr/bin/rm /usr/share/man/man1/rm.1.gz /usr/share/man/man1p/rm.1p.gz
# crontab -e
crontab: installing new crontab
# crontab -l
25 3 * * 1,3,5 systemctl restart httpd
0 1 * * 1-5 /usr/bin/rm -rf /tmp/*
注意事项
- 在crond服务的配置参数中,可以以#号开头写上注释信息
- 计划任务中的分字段必须有数值,绝对不能为空或是*号
- 日和星期字段不能同时使用,否则就会发生冲突