• Linu计划任务/crontab命令


    周期性任务计划

        相关程序包:

            cronie:主程序包,提供了crond守护进程及相关辅助工具

            cronie-anacron:cronie的补充程序;用于监控cronie任务执行状况;如cronie中的任务在过去该运行的时间点未能正常运行,则anacron会随后启动一次次任务

            crontabs:包含CentOS提供系统维护任务

        计划任务守护进程crond运行状态查看方法

            CentOS7:

                systemctl status crond

            CentOS6:

                service crond status

    编写计划任务两种方式:

      系统计划任务设定:编写配置文件/etc/crontab

      用户计划任务设定:执行# crontab -e 命令。在实际工作中,一般采用此方式设定计划任务

    crontab命令常用选项

    crontab -l:查看自己的cron任务列表

    crontab -e:通过EDITOR变量中定义的编辑器打开用户自己的cron配置文件;编辑单独的任务都使用-e选项,无论是删除、修改还是新建

    crontab -r:移除crontab文件,慎用!

    crontab -i:同-r一同使用,以交互式模式让用户有选择的删除指定任务

    crontab -u UserName:仅root可运行,指定某个用户,需要配合其他选项如-l -e使用例如:#crontab -e -u docker(管理员root用户给docker用户设定计划任务)

    计划任务编写格式

    时间格式

    # Example of job definition:

    # .---------------- minute (0 - 59)

    # |  .------------- hour (0 - 23)

    # |  |  .---------- day of month (1 - 31)

    # |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr …

    # |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat

    # |  |  |  |  |

    # *  *  *  *  * user-name  command to be executed

    时间格式举例:
    6 7 * * *           #每天7点6分
    6 7 8 * *          #每月8号 7点6分
    * 7 8 * *          #每月8号7点,每分钟执行
    30-35 7 * * *      #每天7点30-35分,每分钟执行
    5,35 * * * *       #每小时的5,35分钟执行
    5-45/3 * * * *     #每小时的5-45分钟,每隔三分钟执行一次

    时间表示法说明:

        (1)特定值:每个时间位都应该使用其可用的有效取值范围内的值;

        (2)*:某时间位上的*表示对应位的所有有效取值;

        (3)-:连续的时间相邻点取值

        (4),:离散的时间点取值 #,#,#

        (5)/#:表示在指定时间范围内每隔#一次;

    另一种时间格式

    @reboot       Run once after reboot   #每次系统重启或者重新开机都执行一次

    @yearly         0 0 1 1 *

    @annually     0 0 1 1 *

    @monthly      0 0 1 * *

    @weekly        0 0 * * 0

    @daily           0 0 * * *

    @hourly         0 * * * *

    计划任务编写举例

    (1)每3分钟执行一个echo "how are you?"
    # crontab -e
    */3 * * * * /bin/echo "how are you?"
    
    (2)每周2、4、6备份/etc/目录至/backup目录中,备份的文件名以当前etc_开头并跟上当日的日期作为文件名
    # crontab -e
    3 2 * * 2,4,6 /bin/tar -Jcf /backup/etc_`date '+%F'` .tar.xz /etc/*
    
    (3)周天6、9、12、15、18查看一下当前系统挂载的所有文件系统,并将查看的结果追加至/tmp/mounts.txt文件中
    # crontab -e
    17 6,9,12,15,18 * * * /bin/mount >> /tmp/mounts.txt
    
    (4)每天每两小时取当前系统内存空间余量,将其保存至/stats/memory.txt文件中
    # crontab -e
    1 */2 * * * /bin/grep "^MemFree:" /proc/meminfo >> /stats/memory.txt

    制作定时任务的规范:

    1、为定时任务加必要的注释

    2、执行shell脚本任务前加/bin/sh

    3、默认输出信息会以邮件形式发送到用户,可通过重定向到/dev/null中来拒收邮件 

        如:1 1 * * * /bin/bash xxxx.sh &>/dev/null

    4、定时任务命令或程序最好写到脚本里执行

    5、在指定用户下执行相关的定时任务

    6、定时任务执行的脚本要规范路径(/server/scripts)

  • 相关阅读:
    Git/GitHub使用技巧
    《暗时间》第一遍读书心得整理
    学习方法摘要总结
    Py爬虫项目
    2018年6月12日
    狐狸坑蛋糕
    Codeforces 371C Hanburgers
    【别忘咯】 关于运算优先级
    【noip 2009】 乌龟棋 记忆化搜索&动规
    【Openjudge】 算24
  • 原文地址:https://www.cnblogs.com/ysuwangqiang/p/11523661.html
Copyright © 2020-2023  润新知