linux中日志行程的安排

一、知识总结: 
 1、系统可以透过at 这个指令来排程单一工作的任务!『at TIME』为指令的下达方法,当at 进入排程后,系统执行该排程工作时,会到下达时的目录进行任务;
 2、at 的执行必须要有atd 服务的支持,且/etc/at.deny 为控制是否能够执行的使用者账号;
 3、透过atq, atrm 可以查询不删除at 的工作排程;
 4、batch 与at 相同,不过 batch 可在CPU 工作负载小亍0.8 时才进行后续的工作排程;
 5、系统的循环例行性工作排程使用 cron 这个服务,同时利用 crontab -e 及/etc/crontab 进行排程的安排;
 6、crontab -e 设定项目分为六栏,『分、时、日、月、周、指令』为其设定依据;
 7、/etc/crontab 设定分为七栏,『分、时、日、月、周、执行者、指令』为其设依据;
 8、anacron 配置/etc/anacrontab 的设定,可以唤醒停机期间系统未进行的crontab 任务!
二、在未来的某个时间点执行一次某任务 at
 1.手动启动atd这项服务命令 /etc/init.d/atd restart,再设定开机时就启动这个服务,免得每次重新启动都得再来一次的命令 chkconfig atd on
 2.at这个指令产生的工作以文本的形式写入/var/spool/at目录内,然后等待atd这个服务取用并执行.
 3.at这个指令并不是所有的用户都可以执行如果用户在/etc/at.deny中出现则不能使用这个指令,
          如果在/etc/at.allow(白名单)中则可以使用这个命令.
          如果两个档案中都没有的用户.那么默认只有root可以使用at这个指令
 4.命令的执行结果:将以邮件的形式发送给安排任务的用户
 
 5、指令:at [-mldv]  TIME
  at -m 当at的工作完成后,即使没有输出讯息,也以email通知使用者该工作已完成.
  at -l = atq  列出目前系统上面的所有该用户的任务作业全部信息 
  at -d = atrm 工作号 :可以取消一个在at排程中的工作.
  at -v 可以使用较明显的时间格式栏出at排程中的任务栏表
  at -c 工作号 :可以列出后面接的该项工作的实际指令内容
 6、指令使用方法:
  at> TIME
  at>COMMAND 可以输入多个命令,命令最好使用绝对路径.
  at>ctrl+d  
 7、指定时间格式: 
  绝对时间:HH:MM  DD.MM.YY  MM/DD/YY  YY-MM-DD  例子:10:30
  相对时间:now+#  单位:minutes,hours,days, weeks
  模糊时间:noon midnight teatime 
  
 8、batch:是在cpu不忙碌的时候执行该工作任务,cpu负载在0.8的时候.命令的使用方法和at的方法一样.
三、周期性地执行某任务工作crontab
 1、cron:自身是一个不间断运行的服务
 cron:分为系统cron任务 任务放置位置在/etc/crontab             里面内容的格式:分钟 小时 天 月 周 用户 任务
     用户cron任务 任务放置位置在/uar/spool/cron/USRNAME  里面内容的格式:分钟 小时 天 月 周 任务
    2、 时间的格式 分钟   小时 日期 月份 周  任务
  数字范围 0-59  0-23 1-31 1-12  0-7  任务
 3、 时间通配表示:
   *:对应时间有有效取值
    3 * * * * 每天的3分的任务
    3 * * * 7 每周的3分的任务
    13 12 6 * 3
   ,:离开时间点:分隔时段的意思
    10,40 * * * * 每天的10分和40分的任务
   -:连续时间点:
   /:对应取值范围内每多久一次
    */3 * * * *
  例子:每两个小时执行一次
   08 */2 * * *
   */3 * * * * /bin/cat /etc/fstab &> /dev/null
 4、执行结果将以邮件形式发送给管理员:
 5、cron的环境变量:cron执行的所有命令都去PATH环境执行的路径下去找
   PATH /bin/sbin:/usr/bin:/usr/sbin   
    6、与at一样要想使用这个指令必须在白名单中. 使用者的设定的档案在/etc/cron.allow和/etc/cron.deny中.如果用户使用了crontab指令建立了工作排程,就会被记录在/var/spool/cron/下。
 7、指令:crontab
  -l 列出当前用户的所有crontab任务
  -e 编辑crontab任务
  -r 移除所有任务若仅要移除一项,请用-e去编辑.
  -u 后面给用户 :管理其用户的cron任务  只有root有这个权限
 8、anacron:cron的补充,能够实现让cron因为各种原因在过去的时间该执行而未执行的任务在恢复正常执行一次。文件存在分位置的内容/etc/anacrontab
     /etc/anacrontab的内容:
  SHELL=/bin/sh
  PATH=/sbin:/bin:/usr/sbin:/usr/bin
  MAILTO=root
  1 65 cron.daily  run-parts /etc/cron.daily
  7 70 cron.weekly  run-parts /etc/cron.weekly
  30 75 cron.monthly  run-parts /etc/cron.monthly
  
 9、指令:anacron [-sfnu] [job] ..
  -s:开始一连续的执行各项工作 会依据时间记录文件的数据判断是否进行
  -f:强制进行,而不去判断时间记录文件的时间戳
  -n:立刻进行未进行的任务,而不延迟等待时间
  -u:仅更新时间记录文件的时间戳,不进行任何工作。
  job:由/etc/anacrontab定义的各项工作名称。
  
  service crond status  查看是否运行这个服务
  service anacron status
  chkconfig --list  cron
 10、系统crontab任务需要我们手动配置系统文件/etc/crontab  分钟 小时 天 月 周 用户 任务
 /etc/crontab里面的内容。
 SHELL=/bin/bash           <==使用哪种 shell 接口
 PATH=/sbin:/bin:/usr/sbin:/usr/bin <==执行文件搜寻路径
 MAILTO=root              <==若有额外STDOUT ,以email 将数据送给谁
 HOME=/                 <==默认此 shell 的家目录所在
 # run-parts
 01 * * * *  root  run-parts /etc/cron.hourly  <==每小时
 02 4 *  * *  root  run-parts /etc/cron.daily   <==每天
 22 4 * * 0  root  run-parts /etc/cron.weekly  <==每周日
 42 4 1 * *  root  run-parts /etc/cron.monthly <==每个月 1 号
 分 时 日 月 周   执行者身份  指令串

你可能感兴趣的:(linux)