一.一次性计划任务(at)
1.at命令的安装和启用
CentOS7自带,其他版本可能需要手工安装
yum install at
systemctl start atd
systemctl enable atd
2.at的使用
at -l #查看任务列表
at -c [任务号] #查看任务内容
at -r [任务号] #取消任务执行
atq #查看没有执行的计划任务
atrm [任务号] #删除指定的计划任务
at允许使用一套相当复杂的指定时间的方法。
● 能够接受在当天的hh:mm(小时:分钟)式的时间指定。假如该时间已过去,那么就放在第二天执行。 例如:04:00
● 能够使用midnight(深夜),noon(中午),teatime(饮茶时间,一般是下午4点)等比较模糊的词语来指定时间。
● 能够采用12小时计时制,即在时间后面加上AM(上午)或PM(下午)来说明是上午还是下午。 例如:12pm
● 能够指定命令执行的具体日期,指定格式为month day(月 日)或mm/dd/yy(月/日/年)或dd.mm.yy(日.月.年),指定的日期必须跟在指定时间的后面。 例如:04:00 2009-03-1
● 能够使用相对计时法。指定格式为:now + count time-units ,now就是当前时间,time-units是时间单位,这里能够是minutes(分钟)、hours(小时)、days(天)、weeks(星期)。count是时间的数量,几天,几小时。 例如:now + 5 minutes 04pm + 3 days
● 能够直接使用today(今天)、tomorrow(明天)来指定完成命令的时间。
案例1:三天后下午5点执行/bin/ls
# at 5pm+3 days
at>/bin/ls >/root/readme.txt
at>按Ctrl+D
am = 上午、pm = 下午、3 days = 3天
案例2:明天17点,输出时间到指定的文件中
# at 17:00 tomorrow
at>date>/root/readme.txt
at>按Ctrl+D
3.at的黑白名单
- 黑名单:/etc/at.deny (系统中默认存在)
- 白名单:/etc/at.allow (手工创建)
一旦出现白名单,黑名单则失效。
二.计划任务(crontab)
1.什么是计划任务
作用:操作系统不可能24小时都有人在操作,有些时候想在指定的时间点去执行任务(例如:每天凌晨 2 点去重新启动httpd),此时不可能真有人每天夜里 2 点去执行命令,这就可以交给计划任务程序去执行操作了。
即在指定的时间执行指定的操作!
- 服务名称:crond.service
- 配置文件:/etc/sysconfig/crond
- 日志文件:/var/log/cron
2.显示当前账号下的计划任务
先检查crond服务是否开启
crontab -l
no crontab for root #此时root账号下没有创建计划任务
#可加参数-u指定用户
3.编写计划任务
☆计划任务编写规则
分 时 日 月 周 要执行的命令(必须用命令完整路径,可以使用which查看)
计划任务中的符号 | 说明 |
---|---|
* | 表示取值范围中的每一个数字 |
- | 做连续区间表达式的,要想表示1~7,则可以写成:1-7 |
/ | 表示每多少个,例如:想每 10 分钟一次,则可以在分的位置写:*/10 |
, | 表示多个取值,比如想在 1 点,2 点 6 点执行,则可以在时的位置写:1,2,6 |
☆编写计划任务(用户级别)
crontab -e #-e:使用vim编辑器编辑计划任务的文件
#可加参数-u指定用户
#计划任务其实保存在/var/spool/cron/[用户名]的文件中
☆计划任务编写案例
案例1:每月1、10、22 日的4:45 重启network 服务
45 4 1,10,22 * * /usr/bin/systemctl restart network
案例2:每周六、周日的1:10 重启network 服务
10 1 * * 6,7 /usr/bin/systemctl restart network
案例3:每天18:00 至23:00 之间每隔30分钟重启network 服务
*/30 18-23 * * * /usr/bin/systemctl restart network
案例4:每隔两天的上午8点到11点的第3和第15分钟执行一次重启
3,15 8-11 */2 * * /usr/sbin/reboot
☆编写计划任务(系统级别)
在/etc/cron.d/该目录下新建一个文件(记得给文件加上执行权),计划任务的编写规则同上,以这种方式编写计划任务,一定要加上计划任务的执行者。系统级定时任务只有超级用户可以操作。
并且这种以文件的方式编写计划任务,不可以通过命令查看计划任务列表。
4.取消计划任务
crontab -r
5.计划任务的黑白名单
- 黑名单:/etc/cron.deny (系统默认存在)
- 白名单:/etc/cron.allow (手工创建)
一旦出现白名单,黑名单则失效。但这两个名单都不会影响/etc/cron.d/目录中定时任务执行。