Linux定时任务详解及demo

定时任务作用
  • 类似生活的闹钟
  • 可以自动完成操作命令
    • 夜里备份数据(访问量不大)
    • 自动清理磁盘
    • 自动的进行时间同步更新
实现方式
  • cronie:应用在服务器 7*24h(基本使用这个)
  • atd:一次设置定时任务只执行一次
  • anacron:应用在家用电脑上
查看是否安装
rpm -qa cronie

#查看软件大礼包
rpm -ql cronie
定时任务实现方法

日志文件需要定期进行切割处理

系统特殊目录:系统定时任务周期,脚本放在这些目录中就会定时执行
  • 每小时:/etc/cron.hourly
  • 每一天:/etc/cron.daily
  • 每一周:/etc/cron.weekly
  • 每个月:/etc/cron.monthly
用户定时任务实现
  • 查看

    crontab -l
    
  • 编写

    crontab -e 编写定时任务
    vi /var/spool/cron/定时任务配置文件保存目录
    
  • 定时任务配置设置

    /var/spool/cron/root
    root文件表示是root用户设置的定时任务
    
定时任务实际编写方法
  • 服务环境准备:服务是否启动

    systemctl status crond
    
  • 配置定时任务:crontab -e

  • 查看定时任务:crontab -l

  • 语法规范:/etc/crontab:先有五个*,后面具体做什么

    • 第一个*代表分钟:0-59
    • 第二个*表示小时:0-23
    • 第三个*表示日期:1-31
    • 第四个*表示月份:1-12
    • 第五个*表示星期:0-6
      • 0:周日、1:周一、6:周六
写法:定时任务最短执行的周期为每分钟
  • 用数值表示时间信息,每天两点备份数据

    00 02 * * * 备份文件
    
  • 利用特殊符号表示时间信息

    • *代表每,每分钟都执行

      * * * * *
      
    • 每隔5分钟

      */5 * * * *
      
      20/10 1 * * *
      1:20 1:30 1:40 。。。
      
    • 指定时间范围:

      01-05 02 * * *
      每天两点01 02 03 04 05执行
      
    • 指定时间不连续

      00 14,20 * * *
      每天14点和20点执行
      
  • 实际编写:每天凌晨两点备份/data目录到/backup

    • 写上时间信息

      00 02 * * *
      
    • 写上完成任务的具体命令

      cp -a /data /backup
      -a 递归拷贝 或者 -r都行
      
    • 编写定时任务

      crontab -e
      00 02 * * * cp -a /data /backup
      
    • 定时任务排错方法

      • 是否有定时任务文件

        cat /var/spool/cron/root
        
      • 检查定时任务日志文件

        cat /var/log/cron
        
        执行时间
        主机名
        编辑/执行定时任务
        以什么用户编辑或执行定时任务
        
定时任务编写注意事项
  • 编写定时任务要有注释说明

    命令的上一行要有注释说明作用和编写人
    
  • 编写定时任务路径信息使用绝对路径

  • 定时任务执行时,识别的PATH信息只有:/usr/bin:/bin,所以编写要执行的命令要写成绝对命令。

    /usr/sbin/useradd old
    
  • 定时任务中执行命令,如果产生输出到屏幕的信息,都会以邮件方式告知用户

    /var/spool/mail/root	不断变大占用磁盘空间,占用的block空间
    
    • 解决方法:可以将输出到屏幕上的信息保存在黑洞中,避免占用磁盘空间

      将邮件服务关闭
      systemctl stop postfix
      服务关闭了会产生大量小文件
      /var/spool/postfix/maildrop 会占用inode空间
      解决方法:
      rm -f /var/spool/postfix/maildrop/*
      
      左右为难
      解决:将正确和错误信息都送到黑洞里
      * * * * * /bin/sh t.sh &> /dev/null
      
  • 尽量不要产生屏幕输出信息

  • 当需要多个命令完成一个定时任务需求时,可以利用脚本编写。

    • 脚本统一存放路径/server/scripts
定时任务黑名单
vim /etc/cron.deny
里面写用户的用户名,一行写一个

你可能感兴趣的:(linux,运维,服务器)