• linux基础学习-13.2-定时任务的使用


    1、开机自启动crond服务 {#171-开机自启动crond服务}

    [root@oldboy ~]# chkconfig --list crond

    crond 0:off 1:off 2:on 3:on 4:on 5:on 6:off

    2、此时此刻服务的状态 {#172-此时此刻服务的状态}

    [root@oldboy ~]# /etc/init.d/crond status

    crond (pid 1498) is running...

    3、如何查看进程 {#173-如何查看进程}

    [root@oldboy ~]# ps -ef|grep crond

    root 1662 1 0 Mar30 ? 00:00:05 crond

    root 5813 3737 0 17:38 pts/0 00:00:00 grep --color=auto crond

    4、小结 {#174-小结}

    1)crond服务(sshd crond deamon)是运行的程序,而crontab是用来管理用户的定时任务(规则)的命令

    2) crond服务是企业生产工作中常用的重要服务,at和anacron很少用

    3) 几乎每个服务器都会用刀crond服务

    4) 上千服务器可以开发分布式定时任务项目方案。

    5、指令用法 {#175-指令用法}

    [root@oldboy ~]# crontab --help

    crontab: invalid option -- '-'

    crontab: usage error: unrecognized option

    usage: crontab [-u user] file

    crontab [-u user] [ -e | -l | -r ]
    
        (default operation is replace, per 1003.2)
    
    -e    (edit user's crontab) 编辑修改 当前用户的定时任务   vi /var/spool/cron/root
    
    -l    (list user's crontab) 查看/显示 当前用户的定时任务 
    
    -r    (delete user's crontab)删除用的定时任务
    
    -i    (prompt before deleting user's crontab) 删除之前提示
    
    -s    (selinux context)
    

    6、指令选项说明

    例子:

    [root@oldboy ~]# crontab -l

    #sync time lidao 2017xxxxx

    #* * * * * /usr/sbin/ntpdate ntp1.aliyun.com >/dev/null 2>&1

    #*/1 * * * * echo "klanti" >> /server/log/name.log

    [root@oldboy ~]# ls -l /usr/bin/crontab

    -rwsr-xr-x. 1 root root 51784 Nov 10 2015 /usr/bin/crontab

    7、五个星的解释 {#177-五个星的解释}

    通过crontab我们可以用固定的时间间隔执行指定的系统指令或script脚本。时间间隔的单位可以是分、时、日、月、周及以上的任意组合(注意:日和周不要重复,也就是说规定了日就不要在规定周了)。crond服务通过crontab命令可以很容易的实现周期性的日志分析或数据备份等去也运维场景工作。

    [root@oldboy ~]# cat /etc/crontab

    SHELL=/bin/bash

    PATH=/sbin:/bin:/usr/sbin:/usr/bin

    MAILTO=root

    HOME=/

    # For details see man 4 crontabs

    # 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

    提示:时间记忆口诀:分时日月周。取值范围记忆:正常日期时间范围,小学生都会的了 {#提示:时间记忆口诀:分时日月周。取值范围记忆:正常日期时间范围,小学生都会的了}

    8、时间段的表格 {#178-----时间段的表格}

    含义取值范围(整数)
    第一段 代表分钟 00-59(00或者0)
    第二段 代表小时 00-23
    第三段 代表日,天 01-31
    第四段 代表月份 01-12
    第五段 代表星期,周几 0-7(0和7都代表星期日)

    9、crontab 语法格式中特殊符号含义如下表 {#179-crontab-语法格式中特殊符号含义如下表}

    特殊符号含义
    * *号,表示任意时间都,实际就是“每”的意思
    - 减号表示分隔符,表示一个时间范围,区间段,如17-19点,例如:每天的17,18,19点的00分执行任务。00 17-19 * * * cmd
    逗号,表示分隔时段的意思例如每天的5点10点00分执行任务,00 5,10 * * * cmd
    /n n代表数字,即“每隔n单位时间”,例如:每10分钟执行一次任务可以写成_/10_* * * cmd,其中,_/10,_的范围是0-59,因此也可以写成0-59/10

    10、定时任务的步骤

    ####第一个里程碑-准备环境

    mkdir

    ####第二个里程碑-命令行执行命令--是否好使

    tar或者

    升级版

    cd / && tar放包目录.tar.gz要打包的目录

    ####第三个里程碑-放入到脚本(文件) xxxx.sh

    /bin/sh xxx.sh

    ####第四个里程碑-写入到定时任务里面

    * * * * * /bin/sh xxx.sh /dev/null 2>&1

    升级版

    写真正的定时任务

    ####第五个里程碑-检查并修改定时任务执行时间

    tail -f /var/log/cron

    ls目录

    11、定时任务的实例 {#1710-定时任务的实例}

    ① 30 3,12 * * * /bin/sh /scripts/oldboy.sh

    每天的凌晨3点或12点 半 执行

    ② 30 */6 * * * /bin/sh /scripts/oldboy.sh

    每6个小时的半点执行

    ③ 30 8-18/2 * * * /bin/sh /scripts/oldboy.sh

     早上8点到18点每隔2个小时 的半点执行 脚本 
    
     8,9,10,11,12,13,14,15,16,17,18
    
     30 8,10,12,14,16,18 * * *  /bin/sh /scripts/oldboy.sh
    

    ④ 30 21 * * * /application/apache/bin/apachectl graceful

     每天的21点30分执行 重启apache软件
    

    ⑤ 45 4 1,10,22 * * /application/apache/bin/apachectl graceful

     每个月1,10,22号 凌晨4点45分 重启apache软件
    

    ⑥ 10 1 * * 6,0 /application/apache/bin/apachectl graceful

     周六 周日的 凌晨1点10分  重启apache软件
    

    ⑦ 0,30 18-23 * * * /application/apache/bin/apachectl graceful

     18到23点 整点和半点执行  重启apache软件
    
     0,30 18,19,20,21,22,23 重启apache软件
    

    ⑧ 00 */1 * * * /application/apache/bin/apachectl graceful

     00 * * * * /application/apache/bin/apachectl graceful
    

    ⑨ * 23,00-07/1 * * * /application/apache/bin/apachectl graceful

     * 23 * * * * /application/apache/bin/apachectl graceful
    
     00 23,00-07/1 * * * /application/apache/bin/apachectl graceful
    

    01 * * * * cmd #每小时的01分钟执行

    字面意思上是什么时间

    然后在想多久执行一次

    02 04 * * * cmd #每天4点的02分钟执行

    22 14 * * 00 cmd #每周日的14点22分执行

    42 04 01 * * cmd #每月1日的4点42分执行

    12、小结 {#1711-小结}

    1)cmd为要执行的命令或脚本,例如:/bin/sh /server/scripts/chensiqi.sh

    2)每个列之间必须要有一个空格。多个空格可以么?自己实践

    3)第一个里程碑:把字面的翻译成实际的时间(这里不用考虑多久一次/重复)

    4)第二个里程碑:思考多久重复一次或者思考下一次执行是什么时候

    强调:周和日不能同时设置使用 {#强调:周和日不能同时设置使用}

    12、实例 打印自己的名字

    ###第一个里程碑-准备环境

    [root@oldboy ~]# mkdir -p /server/log

    ###第二个里程碑-命令试试

    [root@oldboy ~]# echo klanti >>/server/log/name.log

    [root@oldboy ~]# cat /server/log/name.log

    klanti

    ###第三个里程碑-写入到定时任务

    [root@oldboy ~]#

    [root@oldboy~]# crontab -l

    #sync time lidao 2017xxxxx

    * * * * * /usr/sbin/ntpdate ntp1.aliyun.com >/dev/null 2>&1

    */1 * * * * echo "klanti" >> /server/log/name.log

    ###第四个里程碑-查看-检查

    [root@oldboy ~]# tail -f /server/log/name.log

    klanti

    klanti

    13、总结

    1)定时任务要加注释

    2)如果已经要定向到文件(把命令或脚本的结果放到文件)中,结尾不要有>/dev/null 2>&1

    3)/server/log 目录必须要存在才能出结果,如没有创建这个目录

    4)定时任务中的路径一定要绝对路径

    5)crond服务必须首先开启

    6)查看定时任务日志 tail /var/log/cron

    练习题:

    1、五个星代表什么?

    2、设置定时任务的五大里程碑

    3、写一个定时任务,每天4点的02分钟执行

  • 相关阅读:
    阿里云CentOS主机修改默认SSH登录的22端口
    python跨文件设置全局变量
    python类装饰器
    执行python manage.py celery beat-l info 时报错 SystemError:<class 'OSError'>可能还会有其他报错
    利用Python脚本实现发送邮件
    python操作pymysql
    python-两个数组元素一样,位置个数不相同,按照一个标准的列表实现另一个列表的排序
    XORM高级操作
    flutter踩坑指南 配置篇
    create-react-app项目暴露webpack配置文件
  • 原文地址:https://www.cnblogs.com/Klanti/p/9143443.html
Copyright © 2020-2023  润新知