Linux定时任务管理
学会Linux下定时任务管理,可以方便我们做一些周期性的任务,诸如:清理/tmp目录下文件、数据库备份、日志分析等。Linux下定时任务管理,主要涉及crontab
命令的使用。
crontab简介
crontab
命令常见于UNIX和类UNIX操作系统,用于设置被周期性执行的指令。该命令从输入设备读取指令,并将其存放在crontab
文件中,以供后续读取和执行。一般情况下,crontab
存储的指令被守护进程激活,crond
为其守护进程,crond
常在后台运行,每一分钟会检查一次是否有预定的作业需要执行。
我们可以通过crontab
设置在固定的间隔时间执行指定的系统指令或者Shell、Script脚本。时间间隔可以是分钟、小时、日、月、周的任意组合。
cron启动
本人比较了centos和ubuntu的环境准备区别,centos下安装并启动crond组件即可;ubuntu下主要涉及如下组件:
-
rsysylog
组件(syslog组件,方便查看任务是否被执行):
查看rsyslog状态sudo service rsyslog start
-
cron
组件
查看cron状态sudo cron -f &
crontab使用
1.查询定时任务
查询定时任务crontab -l
2.创建定时任务
创建定时任务crontab -e
- 定时任务项格式:
m h dom mon dow command
以上格式从左至右分表表示:
|字母意义|分钟|小时|日期|月份|周|命令行|
|:-:|:-:|
|数字范围|059|023|131|-12|0~7|要执行的任务|
其中周中0和7均表示周日。
此外还有一些辅助字符:
符号 | 意义 |
---|---|
* | 表示接受任何时刻 |
, | 表示分割字段,接受以,(逗号)隔开的多个时刻 |
- | 表示一段范围内的时刻,接受-(减号)区间内的各个时刻 |
/n | 表示每隔n时刻,执行定时任务 |
示例:
*/1 * * * * touch /home/shiyanlou/$(date +\%Y\%m\%d\%H\%M\%S)
表示每隔1分钟执行touch...的指令。
- 定时任务文档编辑
crontab -e
命令是针对使用者设计的,用户添加任务时会在/var/spool/cron/crontabs/
下面创建一个以用户名命令的任务文档,这样可以做到隔离,不会引起混乱。
而系统设置定时任务可以在/etc/crontab
中配置:
系统定时任务
3.删除定时任务
crontab -r
经简友提醒,这个命令确实比较危险,它会删除当前用户的所有定时任务,所以删除某些定时任务,最好编辑对应的文件。具体见他的评论:)
总之,cron
这个服务的最低侦测限制是分钟,所以cron
会每分钟读取一次/etc/crontab与/var/spool/cron/crontabs里面的任务文档,所以也可以直接编辑/etc/crontab,添加定时任务,保存后,cron就会按照你设定的周期去执行了。