9.1 一次性任务计划:

9.1.1 at
  • at:设置系统在某一个时间点执行的任务,执行结果以邮件的方式发送给任务发起者
  • 语法:
  1. # at data_time
  2. at>at_command1
  3. at>at_command2
  4. at>ctrl+d //保存退出
  5. //注意:at任务计划需要atd服务的支持,atd服务开启方法
  6. # systemctl start atd
  7. # systemctl enable atd
  8. # systemctl status atd
  9. //Linux中设置at任务后,会在/var/spool/at/目录生成at任务计划的文件,按照文件名的排序顺序执行
  • data_time时间日期写法:
    绝对时间:
        HH:MM:具体时间
        DD.MM.YY:天.月.日
        YY-MM-DD:年-月-日
        MM/DD/YY:月/日/年
        HH:MM YY-MM-DD
    相对时间:
        at now+3minutes:从任务计划创建时间开始的3分钟后执行
  • 相关文件:

    • /etc/at.allow :at任务计划的白名单,仅允许此文件中的用户执行at
    • /etc/at.deny :at任务计划的黑名单,仅拒绝次文件中的用户执行at
    • 系统先查找/etc/at.allow,再去查找/etc/at.deny,如果两个文件都没有,只有root用户能执行
  • at命令的相关参数:

    • -l:查看系统中at任务列表,相当于atq
    • -r:删除系统中的at列表,相当于atrm
    • -d:删除系统中的at列表,相当于atrm
    • -c:列出后续at任务的具体指令内容

9.1.2 batch

用法与at相同,不过batch任务计划是在CPU空闲时执行,但CPU的负载小于0.8时执行batch设定的任务

  • 语法:与at基本一致,请查看at的语法和时间格式
  • uptime:查看CPU平均负载

9.2 周期性任务计划

9.2.1 系统周期性任务
  • 日志轮换:logrotate
  • 登录文件分析:logwatch
  • 创建located数据库:
  • 创建man帮助信息数据库:centos6:makewathis,centos7:mandb
  • RPM软件登录文件的创建
  • 与网络相关的分析行为

9.2.2 用户周期性任务
  • cron:设置周期性任务计划
  • anacron:当cron周期性任务由于某种原因没有执行,anacron重新执行cron任务

1.cron:设置周期性任务计划

crond服务开启:

# systemctl start crond
# systemctl enable crond
# systemctl status crond

相关文件:

  • /etc/cron.allow :cron任务计划的白名单
  • /etc/cron.deny :cron任务计划的黑名单,系统默认情况下保留黑名单
  • /etc/crontab:cron配置文件解析:
SHELL=/bin/bash   //各任务计划执行使用的shell程序
PATH=/sbin:/bin:/usr/sbin:/usr/bin  //PATH路径
MAILTO=root    //
  • /etc/cron.d:cron辅助配置文件目录(里面放的是脚本)
  • cron.hourly:由cron工具去执行
  • cron.daily cron.weekly cron.monthly 是由anacron工具去执行
  • /var/spool/cron:用户cron任务计划的配置文件,Linux用户设置完cron任务后,会在/var/spool/cron目录下生成以用户名名称的cron文件

crontab命令:设置/查看/删除cron任务计划,执行结果用邮件发送

  • -e:编辑cron任务内容
  • -u:为指定用户设置cron任务计划(只有root用户能使用)
  • -l:查看cron任务列表 (/etc/crontab)
  • -r:删除所有的cron列表

设置cron任务时间语法:

  • 系统设置:

    • 分 时 日 月 周 用户 命令
  • 用户设置:

    • 分 时 日 月 周 命令
  • 时间取值范围:

    • 分钟:0-59
    • 小时:0-23
    • 日期:1-31
    • 月:1-12 (英文缩写也可以)
    • 周:0-7(0和7都代表周日)(英文缩写也可以)
    • * 代表任意
    • 离散时间段: ,(逗号)

      • 5,15,30,45,56 17 * cat /etc/fstab
      • 17点当中的 5分,15分,30分,45分,56分执行这个命令
    • 连续时间段:-(中横线)
    • 00 23 1-5 cat /etc/fstab
    • 周一到周五,每天23点00执行这个命令
    • 间隔时间段:*/n

      • /5 * cat /etc/fstab
      • 每隔5分钟执行一次

cron设置任务计划时注意事项:

  • CPU和内存资源集中使用时的问题
# vim  /etc/crontab
1,6,11,16,21,26,31,36,41,46,51,56  * * * * root command1
  • 取消一些不必要的输出:设置命令时可以重定向输出
  • 时间的检验:设置时间时,周与日月不可并存
  • 安全的检验:借由 /var/log/cron 的内容查看cron任务计划中是否有非法任务
  • 环境变量:系统命令查找和cron任务命令位置由$PATH变量决定,设置cron任务时,使用命令的绝对路径

2.anacron:当cron周期性任务由于某种原因没有执行,anacron重新执行cron任务
  • 语法:
anacron [options] [job]
    -s : 依据时间记录文件去判断是否执行
    -f : 强制执行
    -n : 立刻执行为运行的任务,不需要延时
  • 相关文件:

    • /etc/anacrontab //该文件具体内容在Linux中查看
    • /var/spool/anacron
  • 执行流程:

    • 1.由/etc/anacrontab 分析到 cron.daily 天数为1天
    • 2.由/var/spool/anacron/cron.daily 取出最近一次执行anacron时间戳
    • 3.由2步骤分析出的时间戳和任务进行比较,查看哪些cron任务超过1天没有执行
    • 4.准备执行指令,根据/etc/crontab的设置,将延时执行
    • 5.延时时间过后,执行指令