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