zoukankan      html  css  js  c++  java
  • Linux定时任务

    05. 定时任务概念(第一个服务)
        作用: 
        1) 类似生活中闹钟
           Alarmy  叫醒方式
           01 关闭方式: 做算数题 2位数 乘法运算  
           02 关闭方式: 运动关闭 摇手机 5次
           03 关闭方式: 拍照关闭 找个地方拍照 
        2) 可以自动完成操作命令
           夜里备份数据(访问量不大)  白天(访问量也少-游戏)
           cp /data  /backup
           自动清理磁盘
           自动的进行时间同步更新 ntpdate xxx
    
        软件种类:
        cronie   实现定时任务功能*****
        atd      实现定时任务功能 只能一次设置定时功能 
        anacron  实现定时任务功能 应用在家用电脑  7*24服务器
        
        检查软件是否安装 cronie
        [root@oldboyedu ~]# rpm -qa cronie
        cronie-1.4.11-19.el7.x86_64
        
        [root@oldboyedu ~]# rpm -ql cronie
        /etc/cron.deny
        /bin/crontab
        
        rpm -ivh 软件包.rpm   --- 手动安装软件
        -i install 安装
        -v         显示过程信息
        -h human   以人类可读方式显示信息
        说明: 无法解决软件依赖关系
        
        补充说明: 如何让linux和windows主机之间传输数据
        yum install -y lrzsz
        在linux上进行操作
        rz -y               从windows上下载重要数据信息
        sz -y 数据信息      从linux上上传重要数据到windows
        
        定时任务实现方法:
        日志文件需要定期进行切割处理
        周一         secure   100M
        周二(00:00)  mv secure secure-`date +%F`  100M 切割后的文件
                     touch secure
        系统特殊目录:
        系统定时任务周期:每小时   控制定时任务目录:/etc/cron.hourly
        系统定时任务周期:每一天   控制定时任务目录:/etc/cron.daily   00:00-23:59
        系统定时任务周期:每一周   控制定时任务目录:/etc/cron.weekly  7天
        系统定时任务周期:每个月   控制定时任务目录:/etc/cron.monthly 30 28 31
        
        
        用户定时任务
        每天的02:30进行数据备份???
        a 用户定时任务查看   crontab -l(list)
        说明: 列表查看定时任务信息(cron table)
    
        b 用户定时任务编辑   crontab -e(edit)
        说明: 编辑配置定时任务信息
    
        crontab -e  编写定时任务     vi /var/spool/cron/        定时任务配置文件保存目录
                                         /var/spool/cron/root    root用户设置的定时任务配置文件
                                         /var/spool/cron/oldboy  oldboy用户设置的定时任务配置文件
        visudo      对普通用户提权   vi /etc/sudoers 
    
    06. 定时任务实际编写方法
        a 定时任务服务环境准备  
          定时任务服务是否启动/是否开机自动启动    
          [root@oldboyedu ~]# systemctl status crond
          ● crond.service - Command Scheduler
             Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)
             Active: active (running) since Tue 2019-04-23 09:15:43 CST; 2 days ago
           Main PID: 905 (crond)
             CGroup: /system.slice/crond.service
                     └─905 /usr/sbin/crond -n
          
          Apr 23 09:15:43 oldboyedu.com systemd[1]: Started Command Scheduler.
          Apr 23 09:15:43 oldboyedu.com systemd[1]: Starting Command Scheduler...
          Apr 23 09:15:43 oldboyedu.com crond[905]: (CRON) INFO (RANDOM_DELAY will be scaled with factor 30% if used.)
          Apr 23 09:15:43 oldboyedu.com crond[905]: (CRON) INFO (running with inotify support)
    
        b 实际编写定时任务
          配置方法: crontab -e
          编写语法规范:
          # 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
          
          *   *   *    *   * 具体做什么事情
          分  时  日  月  周
          
          写法:
          01. 用数值表示时间信息
              00 02 *  *  *   备份文件
          02. 利用特殊符号表示时间信息
              *      *      *     *     *   备份文件 
            每分钟  每小时 每天  每月  每周
              PS: 定时任务最短执行的周期为每分钟
              */5     */5    */5    
            每隔5分钟  每隔5小时    
              01-05   02    *    *    *        
             01到05   02    *    *    *
            指定时间的范围
              00      14,20  *   *    *
            指定不连续的时间信息
            
           测验01: 每天下午02:30分钟 起来学习
                   30 14 * * *
           测验02: 每隔3天 夜里2点   执行数据备份
                   00 02 */3  *  * 
           测验03: */10  01,03  *  *   *   ??? 
                   01点 每隔10分钟 
                   03点 每隔10分钟  
                   每天   凌晨1点和凌晨3点  每隔10分钟0点整 -->  01:00 03:00       
           测验04: */10   01-03  *  *   *
           测验05: *      01,03  *  *   *   ???   
           测验06: *      01-03     *  *   *   
           测验07: 00     02     28 */2 6     ???   
                   02:00  28 每隔两个月  星期6
           结论: 
           01. 在写时间信息的时候, 如果想表示每隔多久执行什么任务
               /上面尽量用*号表示, 不要写具体数值
           02. 时间信息由左到右依次书写, 尽量不要跳步
           03. 当编写定时任务时,日期信息不要和星期信息同时出现
        
           补充说明:
           20/10  01,03 * * *  
           01:20 01:30 01:40       01:59
           03:00        03:59
        
        c 实际编写定时任务
          1) 每天凌晨两点备份 /data目录到 /backup
          第一个历程: 写上时间信息
          00 02 * * *
          第二个历程: 写上完成任务的具体命令
          cp -a /data /backup
          第三个历程: 编写定时任务
          crontab -e 
          00 02 * * *  cp -a /data /backup      
        
          定时任务排查方法:
          01. 检查是否有定时任务配置文件
          cat /var/spool/cron/root 
          00 02 * * *  cp -a /data /backup
          02. 检查定时任务日志文件
          ll /var/log/cron
          -rw-------. 1 root root 14050 Apr 25 15:49 /var/log/cron
          日志信息说明
          Apr 25 15:53:22 oldboyedu crontab[3893]: (root) BEGIN EDIT (root)
          Apr 25 15:54:06 oldboyedu crontab[3934]: (oldboy) BEGIN EDIT (oldboy)
          Apr 25 15:54:48 oldboyedu crontab[3893]: (root) REPLACE (root)
          Apr 25 15:54:48 oldboyedu crontab[3893]: (root) END EDIT (root)
          Apr 25 15:55:01 oldboyedu crond[905]: (root) RELOAD (/var/spool/cron/root)
          Apr 25 15:55:01 oldboyedu CROND[3939]: (root) CMD (cp -a /data /backup)
          Apr 25 15:55:01 oldboyedu CROND[3937]: (root) MAIL (mailed 55 bytes of output but got status 0x004b#012)
            执行时间      主机名   编辑定时任务    以什么用户编辑或执行定时任务/干了什么事情
                                    执行定时任务
          
        
    07. 定时任务编写注意事项:(规范)
        1) 编写定时任务要有注释说明
        2) 编写定时任务路径信息尽量使用绝对路径
        3) 编写定时任务命令需要采用绝对路径执行 /usr/sbin/useradd
           命令执行成功条件:
           useradd  ---> $PATH ---> /sbin/useradd ---> 命令执行成功
           定时任务执行时,识别的PATH信息只有: /usr/bin:/bin
           useradd命令--->usr/sbin/useradd
        4) 编写定时任务时,可以将输出到屏幕上的信息保存到黑洞中,避免占用磁盘空间
           * * * * *  sh test.sh &>/dev/null
           
           说明: 定时任务中执行命令,如果产生输出到屏幕的信息,都会以邮件方式告知用户
           /var/spool/mail/root          不断变大占用磁盘空间        占用的block空间
           解决方法: 将邮件服务关闭
           systemctl stop postfix
           
           /var/spool/postfix/maildrop/  不断产生小文件占用磁盘空间  占用的inode空间
           解决方法: 删除小文件
           rm -f /var/spool/postfix/maildrop/*
           systemctl start postfix
        5) 编写定时任务, 尽量不要产生屏幕输出信息
           cp -a /data /backup    
           tar zcvf /backup/data.tar.gz  /data    有信息输出
           cd / 
           tar zcf /backup/data.tar.gz  ./data    没有信息输出
        6) 当需要多个命令完成一个定时任务需求时,可以利用脚本编写定时
           vim backup.sh 
           cp -a /data /backup    
           tar zcvf /backup/data.tar.gz  /data
           
           crontab -e 
           # xxxxx
           * * * * *  /bin/sh /server/scripts/backup.sh &>/dev/null
    定时任务
  • 相关阅读:
    mysql source 乱码
    php5.6.11 openssl安装
    python threading模块的Lock和RLock区别
    python多线程一些知识点梳理
    多核处理器中进程和线程是如何一起工作的?
    IO是否会一直占用CPU?(转)
    Python TypeError: __init__() got multiple values for argument 'master'(转)
    Jquery中.bind()、.live()、.delegate()和.on()之间的区别详解(转)
    浏览器环境下JavaScript脚本加载与执行探析之代码执行顺序(转)
    为什么有的网页右击没有出现审查元素
  • 原文地址:https://www.cnblogs.com/linux985/p/13304201.html
Copyright © 2011-2022 走看看