美文网首页
D22-操作系统定时任务

D22-操作系统定时任务

作者: 荆俊玮 | 来源:发表于2019-08-04 20:12 被阅读0次

一、系统定时任务概念 == 生活中闹钟

1.时间信息有时不准 时间同步操作 每过10分钟
2.备份数据信息 凌晨
代替人自动完成一些任务

二、系统定时任务实现方法:

1.定时任务软件:cronie *****

  1. 定时任务软件:atd 设置一次定时任务,执行一次
    3.定时任务软件:anacron 定时时间有固定设置 每小时 每天 每个月 cronie-anacron

实现定时任务配置:

1). 系统默认定时任务: 
    cron.hourly/  --- 每小时执行目录中脚本文件
    cron.daily/   --- 每天执行目录中脚本文件
    cron.weekly/  --- 每周执行目录中脚本文件
    cron.monthly/ --- 每月执行目录中脚本文件
    
    vim oldboy.sh
    #!/bin/bash
    echo "info_$(date +%F_%T)" >/tmp/test_cron.txt

2). 用户自定义设置定时任务
    一个命令  两个文件
    crontab   --- 设置和查看定时任务命令
    # crontab -l     --- 查看设置的定时任务
    # crontab -e     --- 编辑设置定时任务/语法检查功能
    
    配置文件
    /var/spool/cron/root   --- root用户设置定时任务配置文件
    /var/spool/cron/oldboy --- oldboy用户设置定时任务配置文件
    /var/log/cron          --- 定时任务日志文件

三、定时任务如何进行配置

1.准备工作:

systemctl start crond
systemctl enable crond

2.编写定时任务:

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

3.定时任务时间信息 执行任务信息

          • 命令/脚本

a.时间信息:

*(分) *(时) *(日) *(月) *(周)
分钟: 0-59
小时: 0-23
日期: 1-31
月份: 1-12
星期: 0-6

b.任务信息:

cp /etc/host /etc/hosts.bak

4. 如何验证定时任务功能:

  1. 实时监控定时任务日志信息
    tail -f /var/log/cron
    Jul 30 16:56:25 oldboyedu crontab[42580]: (root) BEGIN EDIT (root)
    Jul 30 16:56:38 oldboyedu crontab[42580]: (root) REPLACE (root)
    Jul 30 16:56:38 oldboyedu crontab[42580]: (root) END EDIT (root)

1)Aug 1 02:30:01 2)oldboyedu 3)CROND[42950]: 4)(root) CMD (cp /etc/host /etc/hosts.bak)
1): 编写定时/定时任务触发 时间信息
2): 主机名称信息
3): 读取什么定时任务文件信息
4): 定时任务完成了事情

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

练习:

  1. 凌晨2点半 将数据进行备份
    crontab -e
    30 2 * * * cp /etc/host /etc/hosts.bak

  2. 下午3点40,8月6日,周日 将数据进行备份 错误?
    40 15 6 8 0 和女朋友发生小秘密
    PS: 在设置时间信息时, 周信息不能和日期信息一起设置

  3. 每隔1个小时, 数据备份
    /n 每隔多久执行定时任务 间隔多久
    * 每分钟 每小时 每天 每月 每周
    0 */1 * * * cp /etc/hosts /etc/hosts.01 正确
    * */1 * * * cp /etc/hosts /etc/hosts.01 问题
    说明: 每隔一小时会执行
    1:00 --- 2:00 执行时间条件
    * --- 每分钟执行
    PS: 在设置好一个时间信息, 前面的时间也要做规划

  4. 每天上午9,10,11,12点 执行数据备份

    • 连续的时间范围
      0 9-12 * * * cp /etc/hosts /etc/hosts.01 规范配置
      0 9-12/1 * * * cp /etc/hosts /etc/hosts.01 理论正确
      间隔1小时执行 9-10 and 9-12点执行
  5. 每天上午9 11 执行数据备份
    , 非连续的时间范围
    0 9,11 * * * cp /etc/hosts /etc/hosts.01

时间表示形式:

*   每多少时间
*/n 每隔多久  间隔时间
1-10 连续时间范围    
1,10 非连续时间范围

四、定时任务编写常见问题:

  1. 每隔5分钟, 进行时间同步(ntpdate ntp1.aliyun.com)
    如何编写定时任务:
    方法一: 采用绝对路径进行编写
    */5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com
    方法二: 放入到脚本文件中
    #!/bin/bash
    PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/oldboy:/oldgirl:/root/bin
    echo $PATH &>/tmp/oldboy.txt
    ntpdate ntp1.aliyun.com
    说明: 定时任务执行时, 识别的环境变量只有/usr/bin:/bin

  2. 规范化编写定时任务
    */5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com &>/dev/null
    postfix 服务开启 --- /var/spool/mail/root 邮件 文件不断变大 占用更多block
    postfix 服务关闭 --- /var/spool/postfix/maildrop/ 大量小文件 占用更多inode
    /dev/null --- 系统黑洞

  3. 将/etc/hosts 打包备份 /opt/hosts_时间信息.tar.gz 每分钟操作
    tar zcvf /opt/hosts_(date +%F).tar.gz /etc/hosts tar zcvf /opt/hosts_`date +%F`.tar.gz /etc/hosts 解决方式一: 将特殊符号前面加上转义符号 * * * * * 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/sh /server/scripts/test.sh
第三个里程: 放入定时任务中(绝对路径)    
第四个里程: 调整时间信息进行测试
第五个里程: 检查日志信息/检查任务执行结果  

测试环境测试定时任务没问题:
执行脚本将线上服务器定时任务做改动

compress.sh 
#!/bin/bash
tar xxxxx

#!/bin/bash 
echo "* * * * *  /sh/bin /server/scripts/compress.sh"  >>/var/spool/cron/root

相关文章

  • D22-操作系统定时任务

    一、系统定时任务概念 == 生活中闹钟 1.时间信息有时不准 时间同步操作 每过10分钟2.备份数据信息 ...

  • 2019-07-30

    day22 操作系统定时任务 课程介绍 1.定时任务概念介绍2.定时任务实现方式3.定时任务配置应用过程4.定时...

  • day 22 操作系统定时任务

    系统定时任务概念==生活中闹钟 系统定时任务实现方法: 实现定时任务配置: 定时任务如何进行设置 定时任务编写常见...

  • 2019-07-31定时任务

    定时任务 定时任务实现方法 系统默认定时任务 用户自定义设置定时任务 定时任务配置文件 定时任务启动 定时任务样例...

  • 分布式定时调度-xxl-job

    一、定时任务概述 1.1 定时任务认识 1.1.1 什么是定时任务 定时任务是按照指定时间周期运行任务。使用场景为...

  • Day22操作系统定时任务

    什么是定时任务?定时执行,某个job 为什么用定时任务?电商秒杀,定点开启,定时关闭定时备份定时清理时间同步日志切...

  • 7月30日 定时任务

    定时任务 代替人自动完成一些任务 定时任务实现的方法 定时任务软件:cronie定时任务软件:atd --- 设...

  • 2016.12.27 22/35【一分钟创意】记录

    D22-疯帽子-32号-萨日朗 任务22✔ 妈妈颈椎不好,买了个颈椎按摩器,有用和没用之间的东西必须是这货,尤其赠...

  • SpringBoot 定时任务

    1.如何定时任务 1.1 开启定时任务 1.2 @Scheduled(预定的)选择要定时执行的任务 == 定时在前...

  • crontab 定时任务

    查看当前用户的定时任务列表 创建(编辑)定时任务列表 定时任务格式 删除定时任务 注意 一定要设置crontab的...

网友评论

      本文标题:D22-操作系统定时任务

      本文链接:https://www.haomeiwen.com/subject/pzoydctx.html