针对周期性作业cronie软件包提供了crond守护进程,且默认启用并启动。crond守护进程会读取多个配置文件(每个用户对应一个配置文件,使用crontab命令进行编辑)以及一组系统范围内的文件。
命令 | 用途 |
crontab -l | 列出当前用户的周期性任务 |
crontab -e | 编辑当前用户的周期性任务 |
crontab -r | 删除当前用户的所有周期性任务 |
crontab -u user | 一般由root用户管理其他用户的周期性任务 |
[root@stubborn ~]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
crontab周期性任务主要由7个部分组成,顺序依次是:
分、时、日、月、周、用户(可省略)、命令
前五个字段全部使用相同的语法法则:
- * 表示始终
- 数字可用于指定分钟数、小时数、日期或者工作日
- x-y表示范围,从x到y(含)
- x,y表示列表。列表也可以包含范围,例如分钟列中的5,10-13,17表示每小时过去5分钟、10分钟、11分钟、12分钟、13分钟和17分钟都会执行一次周期性任务
- */x中x表示时间间隔,例如分钟列中*/7表示每7分钟执行一次
此外,可以使用三个字母的英文缩写来表示月份和工作日,例如Jan、Feb和Mon、Tue
命令 | 含义 |
* 7 * * * /root/sh/healthcheck.sh | 每天7点执行healthcheck脚本 |
0 0 * * 1,4 rm -rf /tmp/*.upload | 每周一、周四删除/tmp/*.upload文件 |
*/10 * * * * /root/process_monitor.sh >> /root/process_monitor.log | 每十分钟运行process_monitor.sh脚本并将结果重定向到/root/process_monitor.log |
58 23 * * 1-5 /usr/user/bin/check.sh | 周一至周五的23点58分运行 /usr/user/bin/check.sh |