Skip to content

crontab 是于 Linux 操作系统中常见的命令操作工具,常用于设置周期性被执行的指令。命令从标准输入设备读取指令,并将其存放于 crontab 文件中,以供之后读取和执行。

crontab 的基本使用

使用时需要注意的一点是执行脚本或者命令需要使用绝对路径,否则计划任务将无法执行。

crontab 操作前检测

crontab -l 检测 crontab 服务是否安装,如果没有安装需要自行安装。

crontab crond status 检测 crontab 服务是否启动

crontab 的格式

*(分) *(时) *(日) *(月) *(周) command

crontab 的常用命令操作

crontab -e 编辑、修改 crontab 定时任务

crontab -l 列出用户下的定时任务列表

crontab -r 删除用户下的定时任务

crontab -i 在删除用户的 d 文件时给确认提示

crontab [-u user] file 指定用户 指定文件导入定时任务

crontab [-u user] [-e|-l|-r|-i] 指定用户 指定文件导入定时任务

crontab 的简单示例

  1. 每天的固定时间执行服务
shell
   10 12 * * * /bin/systemctl reload nginx #每天的 12 点 10 分重载 nginx 服务
  1. 每月的固定时间执行服务
shell
   15 2 1,3,6,9 * * /bin/systemctl reload nginx #每月的 1,3,6,9 日的 2 点 15 分重载 nginx 服务
  1. 每月的连续天数执行服务
shell
   45 2 1-10,12-15 * * /bin/systemctl reload nginx #每月的 1-10 号、12-15 号重载 nginx 服务
  1. 每两分钟执行任务
shell
   */2 * * * * /bin/systemctl reload nginx #没偶数分钟重载一次 nginx 服务

   1-59/2 * * * * # 每奇数分钟重载一次 nginx 服务
  1. 固定时间内每隔一段时间执行任务
shell
   0 23-7/1 * * * /bin/systemctl reload nginx # 晚上 11 点到早上 7 点之间,每隔一个小时重载 `nginx` 服务
   0,30 18-23 * * * /bin/systemctl reload nginx
   0-59/30 18-23 * * * /bin/systemctl reload nginx # 每天 18 点到 23 点之间 每半小时重载一次 nginx 服务
  1. 固定时间段内的某一特定的天
shell
   59 1 1-7 4 0 test `date +\%w -eq 0`&& /bin/systemctl reload nginx # 四月的第一个星期日早晨 1 时 59 分重载 nginx 服务
  1. 分钟以下的定时任务
shell
   0 * * * * /bin/systemctl reload nginx' && '0 * * * * sleep 30 /bin/systemctl reload nginx #每 30 秒重载一次 nginx 服务

crontab 导入文件

crontab file 导入定时任务文件,导入文件会覆盖原有的文件。

/etc/crontab 文件写入的是系统级别的定时任务。

/var/log/cron 所有的 crontab 任务日志所处的位置。

/var/spool/user 系统用户的任务信息,可以直接编辑