crontab定时任务详解

前端之家收集整理的这篇文章主要介绍了crontab定时任务详解前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
原文发表于: crontab定时任务详解

启用

  1. service crond start

基本格式

  1. #分 时 日 月 周
  2. * * * * * command path
  3. # 第1列表示分钟(0~59) 每分钟用"*"或者"*/1"表示
  4. # 第2列表示小时(0~23)
  5. # 第3列表示日期(1~31)
  6. # 第4列表示月份(1~12)
  7. # 第5列表示星期(0~6 0表示星期天)

示例

  1. #表示每晚的21:30执行命令
  2. 30 21 * * * command
  1. #表示每月的1号、10号、22号的4:45执行命令
  2. 45 4 1,10,22 * * command
  1. #表示每天的18:00到23:00之间每隔30分钟执行命令
  2. 0,30 18-23 * * * command
  1. #表示每周六的23:00执行命令
  2. 0 23 * * 6 command
  1. #表示每小时执行命令
  2. * */1 * * * command
  3.  
  4. #每天晚上23点到次日早上7点之间,每隔1小时执行命令
  5. * 23-7/1 * * * command
  1. # 每月4号与每周一到周三的11点执行命令
  2. 0 11 4 * 1-3 command

命令参数

  1. # 指定执行用户
  2. -u [user]
  3.  
  4. 列出指定用户下的定时任务
  5. -l [user]
  6. #编辑指定用户下的定时任务
  7. -e [user]
  8.  
  9. #删除指定用户下的定时任务
  10. -d [user]
  11.  
  12. #指定crontab的目录
  13. -c dirname
  14.  
  15. #删除目前的定时任务
  16. -r

特殊字符(示例如上)

  • *(星号) 代表任何时候
  • ,(逗号) 代表分隔时段的意思
  • -(减号) 代表一段时间范围内
  • /n(斜线) 代表每隔n单位时间间隔

注意事项

不可以使用几月几号且为星期几的模式,即周与日月不可同时并存。如下即为错误的写法:

  1. 30 12 11 9 5 command

& 后台执行命令

前台运行某个任务时,终端被该任务占据,可以使用&命令把任务放到后台执行。

  1. 30 2 * * * PHP test.PHP &

2>&1 含义

先看一个例子:

  1. 0 2 * * * PHP test.PHP >/home/logs/test.log 2>&1 &

这个定时任务的意思就是在后台执行这条命令,并将错误输出2重定向标准输出1,然后将标准输出1全部存到/home/logs/test.log文件中,并清空/home/logs/test.log日志文件
这里的数字意思如下:

  1. 0 表示 键盘输入
  2. 1 表示 标准输出
  3. 2 表示 错误输出

上面的示例,我们也可以使用如下方式:

  1. #将标准输出重定向/home/logs/test.log文件中,即输出内容不打印在屏幕上
  2. 0 2 * * * PHP test.PHP 1>/home/logs/test.log &
  3. #将错误输出重定向/home/logs/test.log文件
  4. 0 2 * * * PHP test.PHP 2>/home/logs/test.log &
  5.  
  6. #将错误输出重定向到标准输出,然后再标准输出重定向到/home/logs/test.log文件
  7. 0 2 * * * PHP test.PHP 1>/home/logs/test.log 2>&1 &
  8.  
  9. #以下两种方式代表的意思相同
  10. 0 2 * * * PHP test.PHP >/home/logs/test.log 2>&1 &
  11. 0 2 * * * PHP test.PHP 1>/home/logs/test.log 2>&1 &

日志记录

crontab的运行日志记录在“/var/log/cron”文件

猜你在找的CentOS相关文章