命令
crontab
描述
maintains crontab files for individual users
设置计划任务
用法
1 2
| crontab [options] file crontab [options]
|
选项
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| Options: -u 指定用户 -e 编辑crontab -l 显示crontab -r 清空crontab -i 清空前提示
crontab格式说明 * * * * * user-name command or script path 分 时 日 月 周 用户名 执行命令或脚本
* 表示所有值,如月份为*则表示从1月到12月每个月执行一次 / 表示间隔时间,如分钟为*/10则表示每10分钟执行一次 - 表示区间,如小时为1-6/2则表示在每天的1-6点之间每2小时执行一次 , 表示指定值,如分钟为10,20,40则表示在10分,20分,40分钟的时候分别执行一次
|
注意
crontab的运行依赖/usr/sbin/crond
进程,用户的crontab保存在/var/spool/cron
目录下,用户名即为文件名
系统通过/etc/cron.allow或/etc/cron.deny来控制用户是否有crontab权限,
如果cron.allow文件存在,则只有在该文件中指定的用户才有权限使用crontab;
如果cron.deny文件存在,则只有不在该文件中的用户才能使用crontab;
如果两个文件都存在,则只允许root用户使用crontab.
系统默认已创建cron.deny空文件,即允许所有用户使用crontab.
注意crontab的PATH路径并非系统当前的$PATH
,建议使用绝对路径指定命令,包括脚本中的命令,或者在脚本中引用环境变量文件如.bashrc,避免任务执行失败
在线crontab表达式执行时间计算
https://www.matools.com/crontab/
示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
| $ more /etc/crontab SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin
$ systemctl list-units --type service | grep cron crond.service loaded active running Command Scheduler $ systemctl list-unit-files | grep cron crond.service enabled
$ ll /var/spool/cron/ -rw------- 1 root root 60 Feb 25 21:08 root -rw------- 1 usera usera 19 Feb 25 20:57 usera
$ crontab -e 0 1 * * * echo aaa
$ crontab -l 0 1 * * * echo aaa $ more /var/spool/cron/root 0 1 * * * echo aaa
$ crontab -l -u usera * * * * * echo bbb
$ crontab -l 0 1 * * * echo aaa
$ more file 1 2 * * * echo aaa 5 3 * * * echo bbb */10 * * * * echo ccc $ crontab file $ crontab -l 1 2 * * * echo aaa 5 3 * * * echo bbb */10 * * * * echo ccc
* * * * * cmd
15,30 * * * * cmd
15,30 8-11 * * * cmd
15,30 8-11 */2 * * cmd
15,30 8-11 * * 1 cmd
30 22 * * * cmd
30 22 1,10,20 * * cmd
30 22 * * 6,0 cmd
0,30 20-24 * * * cmd */30 20-24 * * * cmd
0 */2 * * * cmd
0 11 4 * 1-3 cmd
0 4 1 1 * cmd
15 3 * * 1-5 cmd
|