crontab
Linux下的任务调度分为用户调度和系统调度
系统调度:操作系统需要执行的周期性任务,操作命令卸载/etc 下的crontab中。
用户任务调度: 用户要定期执行的工作,用户可以使用crontab命令来定制自己的计划任务。 所有用户定义的crontab文件都被
保存在/var/spool/cron目录中, 其文件名与用户名一致
1.crontab命令
crontab使用格式如下 :
crontab [-u user] file
crontab [-u user] [ -e | -l | -r ]
- -u user: 用来设定某个用户的crontab服务, 此参数一般由root用户使用。
- file: file是命令文件的名字, 表示将file作为crontab的任务列表文件并载入crontab。 如果在命令行中没有指定这个文件, crontab命令将接受标准输入, 通常是键盘上键
- 入的命令, 并将它们载入crontab。
- -e: 编辑某个用户的crontab文件内容。 如果不指定用户, 则表示编辑当前用户的crontab文件。 如果文件不存在, 则创建一个。
- -l: 显示某个用户的crontab文件内容, 如果不指定用户, 则表示显示当前用户的crontab文件内容。
- -r: 从/var/spool/cron目录中删除某个用户的crontab文件, 如果不指定用户, 则默认删除当前用户的crontab文件。
crontab文件格式:
字符含义:
- 星号(*) : 代表所有可能的值, 例如“月份”字段如果是星号, 则表示在满足其他字段的制约条件后每月都执行该命令操作。
- 逗号(,) : 可以用逗号隔开的值指定一个列表范围, 例如, “1,2,5,7,8,9”。
- 中杠(-) : 可以用整数之间的中杠表示一个整数范围, 例如“2-6”表示“2,3,4,5,6”。
- 正斜线(/) : 可以用正斜线指定时间的间隔频率, 例如“0-23/2”表示每两小时执行一次。 同时正斜线可以和星号一起使用, 例如*/10, 如果用在“分钟”字段, 表示
每十分钟执行一次。
示例
# 每1分钟执行一次command
* * * * * command
# 每小时的第3和第15分钟执行
3,15 * * * * command# 在上午8点到11点的第3和第15分钟执行
3,15 8-11 * * * command
# 每隔两天的上午8点到11点的第3和第15分钟执行
3,15 8-11 */2 * * command
# 每个星期一的上午8点到11点的第3和第15分钟执行
3,15 8-11 * * 1 command
# 每晚的21:30执行
30 21 * * * command
# 每月1、 10、 22日的4:45执行
45 4 1,10,22 * * command
# 每周六、 周日的1:10执行
10 1 * * 6,0 command
# 每天18:00至23:00之间每隔30分钟执行
0,30 18-23 * * * command
# 每星期六的晚上11:00执行
0 23 * * 6 command
# 每一小时执行一次
* */1 * * * command
# 晚上11点到早上7点之间, 每隔一小时执行一次
* 23-7/1 * * * command
# 每月的4号与每周一到周三的11点执行
0 11 4 * 1-3 command
# 一月一号的4点执行
0 4 1 1 * command
# 每小时执行/etc/cron.hourly目录内的脚本
01 * * * * root run-parts /etc/cron.hourly
环境变量
crontab执行命令时依赖环境变量,系统定时调度时除了默认环境不会加载环境变量,因此最好自己加上必要的环境变量,如:
source /etc/profile
source ~/.bashrc