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

    检查软件是否安装 cronie
    [root@oldboyedu ~]# rpm -qa cronie
    cronie-1.4.11-19.el7.x86_64

    [root@oldboyedu ~]# rpm -ql cronie
    /etc/cron.deny
    /bin/crontab

    补充说明: 如何让linux和windows主机之间传输数据
    yum install -y lrzsz

    系统特殊目录:
    系统定时任务周期:每小时 控制定时任务目录:/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

    . 定时任务实际编写方法
    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


  • 相关阅读:
    Spring Cloud Bus 消息总线介绍
    工商银行分布式服务 C10K 场景解决方案
    关于写好文章的3个心法和5点技巧
    混合云K8s容器化应用弹性伸缩实战
    云原生下的灰度体系建设
    被解救的代码
    【2020-10-22】我是否一个真正靠谱的人
    【2020-10-21】以谦虚与忍耐去期待豁然与贯通
    【2020-10-20】压力也是一种感受,用心体会
    【2020-10-19】不断试错的过程
  • 原文地址:https://www.cnblogs.com/huangfeng666/p/12273330.html
Copyright © 2011-2022 走看看