crontab
主要用于设置定时任务. Linux 使用 crontab
是简单的.
语法
crontab [-u user] file
crontab [-u user] [ -e | -l | -r ]
-u user 给crontab服务指定用户。
file crontab服务的文件名, 将指定文件的内容做为crontab的任务列表文件并载入crontab。
-e 编辑某个用户的crontab文件内容。如果不指定用户,则表示编辑当前用户的crontab文件。
-l 显示某个用户的crontab文件内容,如果不指定用户,则表示显示当前用户的crontab文件内容。
-r 从/var/spool/cron
目录中删除某个用户的crontab文件,如果不指定用户,则默认删除当前用户的crontab文件。
-i 在删除用户的crontab文件时给确认提示。
使用
下面介绍一个常见的用法。
实现一个定时任务,每分钟输出一次当前时间?
新建一个文件 rootcron
,命名通常以 cron
结尾,表示其是一个 crontab 文件。
1 | * * * * * * date >> /home/baoxuebin/test |
执行 crontab rootcron
控制台显示 crontab: installing new crontab
表示任务已经添加成功。如果控制台出现 errors in crontab file, can't install.
,则表示 cron 语法或任务指令错误。
可以去 /var/spool/cron/
下查看 crontab 任务,该 crontab 是之前文件的副本,按用户名区分。也可以使用 crontab -l
查看。日志可以通过 /var/log/cron
查看。
同样,如果想要修改任务,既可以修改 /var/spool/cron/
下的 crontab 文件,也可以执行 crontab -e
。
如果之前已经存在 crontab 任务列表,再执行 crontab file
则会覆盖原来的任务列表,以 file 中的内容代替。
删除使用 crontab -r
,但这个命令会删除指定用户(默认当前用户)的所有任务,所以需慎重使用。
请注意,频率一般不能表示; 只有均匀划分它们的范围的步数值表示准确的频率(分钟和秒,即2/3,/ 4,/ 5,/ 6,/ 10,/ 12,/ 15,/ 20和/ 30,因为60是可以被这些数字整除;数小时,即/ 2,/ 3,/ 4,/ 6,/ 8和/ 12); 所有其他可能的“步骤”和所有其他领域在“重置”到下一分钟,第二天或第二天之前的时间单位结束时产生不一致的“短”期; 例如,根据月份和闰年,输入* / 5的日期字段有时会在1,2或3天后执行; 这是因为cron是无状态的(它不记得最后一次执行的时间,也没有计算它与现在的差别,这是精确频率计数所需的 - 相反,cron只是模式匹配器)。https://en.wikipedia.org/wiki/Cron
常见问题
shell 脚本不能正常执行,尝试 crontab -e
添加 PATH 路径。
常见 cron 表达式
*(分) *(时) *(日) *(月) *(星期)
* * * * * 每一分钟执行
3,15 * * * * 每小时的第3或15分钟执行
* * */2 * * 每2天执行
* * * * 1 每周一执行