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 。