Linux定时任务管理

作者: EldonZhao | 来源:发表于2016-12-19 19:55 被阅读130次

    学会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

    查看rsyslog状态
    • cron组件

    sudo cron -f &

    查看cron状态

    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就会按照你设定的周期去执行了。

    相关文章

      网友评论

      • hellowenqi:删除定时任务指令应该是 crontab -r;另外删除需谨慎,因为直接删除的是/var/spool/cron/username文件 (centos 路径),而不是单个任务,建议使用crontab -e 或直接编辑/var/spool/cron/username来修改定时任务
        EldonZhao:@hellowenqi 多谢提醒,确实是的,那样就把当前用户的所有定时任务删除了。我修改一下。
        EldonZhao:@hellowenqi 哈哈,过了个圣诞,Merry Christmas:)

      本文标题:Linux定时任务管理

      本文链接:https://www.haomeiwen.com/subject/txdzmttx.html