Linux运维63期day22

系统定时任务实现方法:

一、实现定时任务配置
1)系统默认定时任务:
cron.daily/ ---每天执行目录中脚本文件
cron.hourly/ ---每小时执行目录中脚本文件
cron.weekly/ ---每周执行目录中脚本文件
cron.monthly/ ---每月执行目录中脚本文件

vim oldboy.sh
· #!/bin/bash
echo "info_$(date +%F_%T)" >/tmp/

  1. 用户自定义设置定时任务
    一个命令 两个文件
    crontab --- 设置和查看定时任务命令
    ·# crontab -l --- 查看设置

    crontab -e --- 编辑设置定时任务/语法检查功能

配置文件
/var/spool/cron/用户名称文件 --- 用户设置定时任务配置文件
·/var/spool/cron/root

/var/log/cron --- 定时任务日志文件

二 定时任务如何进行配置
准备工作:
systemctl status crontab
ststemctl start crontab

编写定时任务:
[root@qiwangyu ~]# cat /etc/crontab --- 定时任务样例
SHELL=/bin/bash 环境变量信息
PATH=/sbin:/bin:/usr/sbin:/usr/bin 环境变量信息
MAILTO=root 环境变量信息

·# 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

定时任务时间信息


· * 分钟 0-59 分

  • 小时 0-23 时
  • 日 1-31 天
  • 月 1-12 月
  • 周 0-6 周

执行任务信息
命令/脚本
任务信息:
cp/etc/hosts /etc/hosts.bak

如何验证定时任务功能:
01.实时监控定时任务日志信息
[root@qiwangyu ~]# tail -f /var/log/cron
Jul 30 16:05:01 qiwangyu crond[8622]: (CRON) INFO (@reboot jobs will be run at computer's startup.)
Jul 30 16:12:34 qiwangyu crontab[8626]: (root) LIST (root)
Jul 30 16:46:16 qiwangyu crontab[8646]: (root) BEGIN EDIT (root)
Jul 30 16:47:31 qiwangyu crontab[8649]: (root) BEGIN EDIT (root)
01 02 03 04
Aug 1 02:30:01 qiwangyu CROND[8933]: (root) CMD (cp /etc/hosts /etc/hosts.bak)
01.编写定时任务触发时间信息
02.主机名称信息
03.读取什么定时任务文件信息
04.定时任务完成了什么事情

02.加快定时任务执行
调整时间信息
PS : 调整时间尽量往后调整

  1. 每隔一个小时,数据备份
    /n 每隔多久执行定时任务 间隔多久
    · * 每分钟 每小时 每天 每月 每周

    • */1 * * * cp /etc/hosts /etc/hosts.bak ×
      0 /1 * * * cp /etc/hosts /etc/hosts.bak √
      说明: 每隔一小时会执行
      1:00 --- 2:00 执行时间条件
      · * --- 每分钟执行
      集合在一起表示在每小时前有
      就是每分钟和每小时都执行
      PS : 在设好一小时时间,最好将分钟事假也做规划调整
      0 */1 * * *
  2. 每天上午9.10.11.12.点 执行数据备份
    · - 连续的时间范围
    0 9-12 * * * cp /etc/hosts /etc/hosts.bak

  3. 每天上午9 11 执行数据备份
    , 非连续的时间范围
    00 9,11 * * *

    练习题总结:
    时间表示形式:
    · * 每多少时间
    */n 每隔多久 间隔时间
    n-m 连续时间范围
    n,m 非连续的时间范围

  4. 定时任务编写常见问题

    1. 每隔5分钟,进行时间同步(ntpdate ntp1.aliyun.com)
      在定时任务中 只识别两个环境便令文件 /usr/bin ; /bin
      如何编写定时任务?
      方法一:采用绝对路径进行编写

      */5 * * * * /usr/sbin/ntpdate ntp1.ailyun.com

      方法二:放入到脚本文件中

      !/bin/bash

      PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
      echo $PATH &>/tmp/oldboy.txt
      ntpdate ntp1.ailyun.com
  1. 规范编写定时任务
    */5 * * * * /usr/sbin/ntpdate ntp1.ailyun.com &>/dev/null
    postfix 服务开启 --- /var/spool/mail/root 邮件 文件不断变大
    postfix 服务关闭 --- /var/spool/cron/root 大量小文件
    /dev/null --- 系统黑洞
  1. 将/etc/hosts 打包备份 /opt/hosts_时间信息.tar.gz 每分钟操作
    PS: 定时任务中有些特殊符号无法识别
    解决方式一:将特殊符号前面加上转义符号
    % 符号前加 \

            • tar zcvf /opt/hosts_$(date +%F).tar.gz /etc/hosts
              解决方式二:将有特殊符号命令放入脚本中

    !/bin/bash

    tar zcvf /opt/hosts_$(date +%F).tar.gz

            • sh /server/scripts/tar.sh &>dev/null

定时任务编写注意事项:
01. 编写定时任务需要有注释信息 (时间 编写人员 任务作用)
02. 编写定时任务注意环境变量 /usr/bin ;/bin 命令书写为绝对路径
03. 编写定时任务是注意特殊符号 需要标记转义符号
04. 编写定时任务需要将输出信息定义到空 &>/dev/null
05. 编写定时任务建议使用脚本编写 #~/bin/bash

编写定时任务规范:
命令编写定时任务
第一个里程:测试命令是否可以在命令行执行
第二个里程:放入定时任务中(绝对路径)
第三个里程:调整时间信息进行测试
第四个里程:检查日志信息/检查任务执行结果

脚本编写定时任务
第一个里程:编写脚本信息
第二个里程:测试脚本执行效果
/bin/sh /server/scripts/test.sh
第三个里程:放入定时任务中(绝对路径)
第四个里程:调整时间信息进行测试
第五个里程:检查日志信息/检查任务执行结果

测试环境测试定时任务没问题:
执行脚本将线上服务器定时任务做改动
compress.sh
#!/bin/bash
tar xxxxx

在写一个脚本
#!/bin/bash
echo "* * * * * /sh/bin /server/scripts/compress.sh" >>/var/spool/cron/root

你可能感兴趣的:(Linux运维63期day22)