Linux Cron表达式
Cron表达式的定义
Linux的Cron表达式支持分钟、小时、月的某天、月份、周当中的某天,最小的粒度到分钟、最大的粒度到月份和周的某天。
编辑一个linux定时任务:
crontab -e
每位的意义
* * * * * 要执行的命令
----------------
| | | | |
| | | | ---- 周当中的某天 (0 - 7) (周日为 0 或 7)
| | | ------ 月份 (1 - 12)
| | -------- 一月当中的某天 (1 - 31)
| ---------- 小时 (0 - 23)
------------ 分钟 (0 - 59)
取值范围
代表意义 | 分钟 | 小时 | 日期 | 月份 | 周 | 指令 |
数字范围 | 0-59 | 0-23 | 1-31 | 1-12 | 0-7 | 定时执行的命令 |
表达式中的特殊字符
特殊字 符 | 代表意义 |
*(星号) | 代表任何时刻!例如每天每月每周都可以用* |
,(逗号) | 代表分隔时间点。例如在每天的3点和6点执行命令:
0 3,6 * * * command |
-(中划线) | 代表一段时间间隔。例如 8 点到 12 点之间的每小时的 20 分执行命令:
20 8-12 * * * command |
/n(斜线) | n表示一个整数,代表每个n间隔。例如每五分钟执行命令:
*/5 * * * * command |
表达式应用示例
# 每天晚上1点调用/home/testuser/test.sh
0 1 * * * /home/testuser/test.sh
# 每10钟调用一次/home/testuser/test.sh
/10 * * * /home/testuser/test.sh
# 每晚的21:30重启apache
30 21 * * * /usr/local/etc/rc.d/lighttpd restart
# 在每天18:00至23:00之间每隔30分钟重启apache
0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart
# 每月1、10、22日的4 : 45重启apache
45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart
# 每周六、周日的1:10重启apache
10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart