怎样在 CentOS 设置定时任务 crontab

Lasted 2020-11-24 17:46:45

cron是一款类Unix的操作系统下的基于时间的任务管理系统。用户们可以通过 cron 在固定时间、日期、间隔下,运行定期任务(可以是命令和脚本)。cron常用于运维和管理。cron该词来源于希腊语chronos(χρόνος),原意是时间。

定时任务格式

定时任务格式如下所示,最小时间单位为1分钟,可以使用月份(jan,feb,mar,apr ...)、星期(sun,mon,tue,wed,thu,fri,sat)的英文简称表示。

# Example of job definition:
# .---------------- 分钟 (0 - 59)
# |  .------------- 小时 (0 - 23)
# |  |  .---------- 日期 (1 - 31)
# |  |  |  .------- 月份 (1 - 12)
# |  |  |  |  .---- 星期 (0 - 6) (0表示周日)
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed

可以使用下面的命令编辑和查看定时任务。

编辑定时任务
vi /etc/crontab
编辑定时任务
crontab -e
查看定时任务
crontab -l
删除定时任务
crontab -r

常用案例

每分钟执行一次 echo 命令。

* * * * * echo hello world

每分5分钟执行一次备份命令,使用 nohup,不打印日志。

*/5 * * * * nohup backup > /dev/null 2>&1 &

* 和 0 表示不同的意义,连接符 / 表示时间间隔,如下所示:

表示10点到11点,每分钟执行一次
* 10 * * * echo hello world
表示10:00执行一次命令
0 10 * * * echo hello world
表示10点到11点,每5分钟执行一次
*/5 10 * * * echo hello world

每天6点10分执行一次备份。

10 6 * * * backup

每月1号和15号全量备份。

0 0 1,15 * * backup_all

每天 6-10 点的第10、15、30分钟执行 Docker 中的PHP脚本。

10,15,30 6-10 * * * docker exec `docker ps | grep '9000/tcp' |awk '{print $1}'` php /path/index.php > /dev/null 2>&1

注意事项

  • 可以通过 user 参数指定执行的用户。
  • 命令中最好使用绝对路径。
  • 可在 /var/log/cron 中查看执行日志。