Linux crontab 配置定时任务


#Linux#


crontab 命令

为当前用户编辑定时任务:

$ crontab -e

查看当前用户的配置:

$ crontab -l

超级用户可以修改特定用户的配置:

$ crontab -u username -e

查看帮助文档:

$ man crontab
$ man 5 crontab

crontab 配置

crontab 文件中每一行的格式:

分钟 小时 日期 月份 星期 命令
  • 分钟:取值范围 0~59
  • 小时:取值范围 0~23
  • 日期:取值范围 1~31
  • 月份:取值范围 1~12
  • 星期:取值范围 0~7,0和7代表星期日

* 代表所有取值。

对于日期和星期:

  • 如果日期不是*星期*,那么星期无效,日期有效。
  • 如果星期不是*日期*,那么日期无效,星期有效。
  • 如果星期日期都不是*,那么两者都有效,满足任何一个都会执行。

范围取值:

  • 1-4,代表1、2、3、4。
  • 1-4,8-10,代表1、2、3、4、8、9、10。
  • 1,4,代表1、4。

每月每天每小时的第 0 分钟执行一次

0 * * * * /bin/ls

*意味着在对应的时间上加一个

以下为示例:

每两小时的0分执行一次

0 */2 * * * /bin/ls

1到10点,每两小时的10分执行一次

10 1-10/2 * * * /bin/ls

周一到周五,每分钟执行一次

* * * * 1-5 /bin/date >> /tmp/temp.txt

配置完成后,稍等片刻,会在 /tmp/temp.txt 文件中看到类似下面的内容:

2019年 07月 11日 星期四 08:25:01 CST
2019年 07月 11日 星期四 08:26:01 CST

在每月1号或者每周一,每分钟执行一次

* * 1 * 1 /bin/date >> /tmp/temp.txt

在每月1号到4号,每分钟执行一次

* * 1-4 * * /bin/date >> /tmp/temp.txt

在每月1号、4号,每分钟执行一次

* * 1,4 * * /bin/date >> /tmp/temp.txt

每10分钟执行一次

*/10 * * * * /bin/date >> /tmp/temp.txt

配置文件位置

在 Ubuntu 18.04 中,用户的 crontab 配置文件放在/var/spool/cron/crontabs目录中。

cron 服务

crontab 配置的任务之所以能执行,是因为Linux 运行着一个 cron 服务。

查看 cron 服务的运行状态:

$ service cron status

在 ubuntu 18.04 中运行结果如下:

$ service cron status
● cron.service - Regular background program processing daemon
   Loaded: loaded (/lib/systemd/system/cron.service; enabled; vendor preset: ena
   Active: active (running) since Thu 2019-07-11 07:57:04 CST; 5min ago
     Docs: man:cron(8)
 Main PID: 604 (cron)
    Tasks: 1 (limit: 3926)
   CGroup: /system.slice/cron.service
           └─604 /usr/sbin/cron -f

关闭:

$ service cron stop

启动:

$ service cron start

有些 Linux 发行版中,服务名是 crond 。


( 本文完 )