Linux定时任务管理

学会Linux下定时任务管理,可以方便我们做一些周期性的任务,诸如:清理/tmp目录下文件、数据库备份、日志分析等。Linux下定时任务管理,主要涉及crontab命令的使用。

crontab简介

crontab命令常见于UNIX和类UNIX操作系统,用于设置被周期性执行的指令。该命令从输入设备读取指令,并将其存放在crontab文件中,以供后续读取和执行。一般情况下,crontab存储的指令被守护进程激活,crond为其守护进程,crond常在后台运行,每一分钟会检查一次是否有预定的作业需要执行。
我们可以通过crontab设置在固定的间隔时间执行指定的系统指令或者Shell、Script脚本。时间间隔可以是分钟、小时、日、月、周的任意组合。

cron启动

本人比较了centos和ubuntu的环境准备区别,centos下安装并启动crond组件即可;ubuntu下主要涉及如下组件:

  • rsysylog组件(syslog组件,方便查看任务是否被执行):

sudo service rsyslog start

《Linux定时任务管理》 查看rsyslog状态

  • cron组件

sudo cron -f &

《Linux定时任务管理》 查看cron状态

crontab使用

1.查询定时任务

crontab -l

《Linux定时任务管理》 查询定时任务

2.创建定时任务

crontab -e

《Linux定时任务管理》 创建定时任务

  • 定时任务项格式:

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中配置:
    《Linux定时任务管理》 系统定时任务
3.删除定时任务

crontab -r

经简友提醒,这个命令确实比较危险,它会删除当前用户的所有定时任务,所以删除某些定时任务,最好编辑对应的文件。具体见他的评论:)

总之,cron这个服务的最低侦测限制是分钟,所以cron会每分钟读取一次/etc/crontab与/var/spool/cron/crontabs里面的任务文档,所以也可以直接编辑/etc/crontab,添加定时任务,保存后,cron就会按照你设定的周期去执行了。

    原文作者:EldonZhao
    原文地址: https://www.jianshu.com/p/b58de9094c4b
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞