Linux计划任务,可以按分钟,小时,天,月,星期几调度任务;
有2种类型的配置文件
Linux的分发版本不同,配置文件的路径会不同;
CentOS用户的计划任务文件在/var/spool/cron
目录下;
Ubuntu在/cron/crontabs
目录下;
系统范围的计划任务文件,有2个目录
/etc/crontab
,系统范围的用户任务;/etc/cron.d
,系统计划任务,分为hourly,daily,weekly,monthly任务;只能由系统管理员编辑;
编辑/etc/crontab
,格式为
* * * * * command(s)
需要加有任务运行的用户名;
用户计划任务不需用户名;
* * * * * command(s)
- - - - -
| | | | |
| | | | ----- Day of week (0 - 7) (Sunday=0 or 7)
| | | ------- Month (1 - 12)
| | --------- Day of month (1 - 31)
| ----------- Hour (0 - 23)
------------- Minute (0 - 59)
*
代表’每’,如每分钟,每小时等;
,
表示列表,如小时段1,3,5,表示在1点,3点,5点的0分钟执行;
-
表示范围,如星期段1-5,表示在星期1到星期5执行;
/
表示间隔,如小时段*/4,表示每隔4小时运行(从0点开始),等价于0,4,8,12,16,20;而1-30/10表示1,11,21
内置的时间表示
crontab -e 编辑用户文件,不存在则创建;
crontab -l 列出文件内容;
crontab -u 编辑某个用户的文件;
crontab -i 删除当前计划任务文件,要确认;
crontab -r 删除当前计划任务文件,不需确认;
会调用系统定义的编辑器,编辑器环境变量为VISUAL
或EDITOR
cron进程会自动设置一些环境变量
PATH=/usr/bin:/bin
;计划任务里的命令如果不在PATH里,可以使用绝对路径;或可以在文件里更改PATH;或在脚本中附加:$PATH系统管理员可以控制哪些用户可以运行计划任务;
/etc/cron.deny
和 /etc/cron.allow
是每行一个用户名;
/etc/cron.deny
默认为空,所有用户都能运行计划任务;
/etc/cron.allow
默认不存在,只有定义的用户可以运行计划任务;
如果2个文件都不存在,只有授权的用户可以运行计划任务;
//# 周1到周5,每天15:00点
0 15 * * 1-5 command
//# 标准错误通知发送给[email protected]
[email protected]
//# 每5分钟,标准输出到/dev/null
*/5 * * * * /path/to/script.sh > /dev/null
//# 周1的15:00
0 15 * * Mon command1 && command2
//# 每天的8点到16点
00 08-16 * * * /path/to/script.sh
//# 每月1号到7号,周1,7点
0 7 1-7 * 1 /path/to/script.sh
//# 每月的1号,15号,9:15
15 9 1,15 * * /path/to/script.sh
//# 设置crontab变量
HOME=/opt
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
SHELL=/usr/bin/zsh
[email protected]
*/1 * * * * command