cron(定时任务)
cron是最常用的定时任务类型,用于执行周期性计划
对应的服务为crond,使用前请确保此服务已运行
1  | systemctl status crond  | 
常用命令
crontab -e 使用vi文本编辑器编辑cronjob,可通过-u指定用户执行。
crontab -l 列出所有cronjob:
1  | crontab -l  | 
crontab -r  删除用户的cronjob
cronjob 格式
1  | * * * * * expr  | 
前五个*分别代表 分、时、日、月、周,最后一列是需要执行的命令。
使用L 可代表本月最后一天/本周最后一天:
e.g:
在天(月)子表达式中,“L”表示一个月的最后一天
在天(星期)自表达式中,“L”表示一个星期的最后一天,也就是SAT
6L”表示这个月的倒数第6天,“FRIL”表示这个月的最一个星期五
在使用“L”参数时,不要指定列表或范围,因为这会导致问题
例1:
需要在每周五晚上三点钟执行 /root/dump.sh 脚本
1  | 0 3 0 0 5 /root/dump.sh  | 
例2:
需要在每月10号执行 /root/dump.sh脚本
1  | 0 0 0 10 0 /root/dump.sh  | 
例3:
在每月月底最后一天执行 /root/dump.sh脚本
1  | 0 0 L * * /root/dump.sh  | 
cron的权限管理
/etc/cron.deny文件为cron的黑名单,在此名单中的用户无法执行cron
另外/etc/cron.allow默认不存在,为白名单,若手动创建,则黑名单失效,除白名单外的用户无法执行cron
at命令
与周期性任务cron不同,at命令用于执行在某一时间只执行一次的一次性任务。
使用方法:
at + 选项 + 时间参数
选项
1  | at -f $FILE_NAME #指定执行的脚本文件  | 
常用的时间格式:
<时>:<分> <年>-<月>-<日> 
<时>:<分>
MMDDYY 
MM/DD/YY
MM.DD.YY
英文月名 日期 年份
各种简写:
Midnight(00:00)
Noon(12:00)
Teatime(16:00),
now+time(从现在起的某段时间后执行)
例1:
五分钟后执行a.sh
1  | at -f a.sh now+5min  | 
写法2:
1  | at now+5min  | 
权限控制
同cron, 文件名/etc/at.deny、/etc/at.allow