Linux之crontab 定时器的使用
linux 系统则是由 cron (crond) 这个系统服务来控制的。Linux 系统上面原本就有非常多的计划性工作,因此这个系统服务是默认启动的。另 外, 由于使用者自己也可以设置计划任务,所以, Linux 系统也提供了使用者控制计划任务的命令 crontab 命令。
crontab命令:
crontab -l 查看定时任务
crontab -l -u username列出username的所有调度任务
crontab -e 编辑定时任务
crontab -r 删除所有的定时任务
crontab格式:
每一条crontab都有六个参数,分 时 日 月 周 命令。
分钟 |
小时 |
天数 |
月数 |
周数 |
minute |
hour |
day |
month |
week |
每个字段代表的含义如下:
Minute 每个小时的第几分钟执行该任务
Hour 每天的第几个小时执行该任务
Day 每月的第几天执行该任务
Month 每年的第几个月执行该任务
DayOfWeek 每周的第几天执行该任务
crontab注意:在 crontab 命令中只有 “绝对路径”,不存在相对路径,故执行任何命令都需要写绝对路径
实例讲解:
2 5 1 3 * ls 3月1日5点2分执行ls命令
特殊用法:
不连续时间,如每月10号与20号都需要执行ls命令
* * 10,20 * * ls
连续时间,如3月8-15号每天都要执行ls命令:
* * 8-15 3 * ls
间隔式,如每俩分钟执行ls命令:
*/2 * * * * ls
crontab运行:
systemctl start crond //启动服务
systemctl stop crond //暂停服务
systemctl restart crond //重启服务
systemctl status crond // 查看服务状态
systemctl reload crond //重新载入配置
注意:这里写的是centos7的命令,更老的版本或者其他linux版本如果没有systemctl命令的话,可以测试service命令。
补充:
1. linux
看 /var/log/cron.log这个文件就可以,可以用tail -f /var/log/cron.log观察
2. unix
在 /var/spool/cron/tmp文件中,有croutXXX001864的tmp文件,tail 这些文件就可以看到正在执行的任务了。
3. mail任务
在 /var/spool/mail/root 文件中,有crontab执行日志的记录,用tail -f /var/spool/mail/root 即可查看最近的crontab执行情况。
通过脚本来添加定时任务时,使用命令进入编辑在脚本中无法实现。这里可以直接修改文件(/var/spool/cron/username)