例行性工作调度at、cron、anacron

例行性工作:系统在某个时间点会自动进行的工作

  • 只执行一次就结束调度:at,服务为atd

  • 循环执行的工作调度:crontab,服务为crond

常见例行性工作

  • 日志轮替(log rotate)

  • 日志分析(log watch)

  • 更新数据库

  • 删除临时文件(tmpwatch)

  • 网络有关服务检查


at:执行一次的工作调度 

1:生成工作的流程

  • at命令生成要运行的工作

  • 将工作以文本形式写入/var/spool/at目录

  • 等待atd服务取用执行

2:at工作调度规则

  • /etc/at.allow:写在这文件中的用户才能使用at

  • /etc/at.deny:不存在/etc/at.allow时写在这文件中的不能用at

  • 两个文件都没有时,只有root能用at

3:使用

  • 启动服务:atd

  • at [-m 以email方式通知已完成工作] [-c 列出工作的命令]

  • atq查看工作,atrm [job'numbr 删除工作]

wKioL1WI4i-zsaGmAAEzPR3KpOs488.jpg

  • batch:使用方法和at一样,当cpu负载小于0.8时,才进行后台任务


cron:循环执行例行性工作调度

1:工作流程

  • crontab命令生成要运行的工作

  • 将工作以文本形式写入/var/spool/cron目录

  • cron每分钟读取一次/var/spool/cron

  • cron执行每一项工作都记录到/var/log/cron日志文件中(at没有)

  • /etc/cron.allow 和 /etc/cron.deny   (和at一样)

2:使用

crontab [-e 编辑内容] [-l 查看内容] [-r 删除所有工作] [-u 指定用户编辑]    

// 进入一个文本界面(其实是执行/usr/bin/crontab文件)

  • 格式:分   时   日   月   周   命令

  • 特殊字符意义

* 任何时刻

,与:* 3,4 * * * command 三点和四点

- 至:* 3-5 * * * command 三点到五点

/n 每:*/3 * * * * command 每三分钟一次

*/5  *  *  *  *  /home/boxin/test.sh    //每5分钟执行一次命令

59  23  1  1  *  mail my < /home/boxin/hello.txt    //每个一月一号23:59都会发一封邮件给my

3:系统配置文件:/etc/crontab

  • cron这个服务每分钟会读取一次 /etc/crontab 和 /var/spool/cron的数据

  • /etc/crontabroot可直接编辑此文件写入工作

[root@boxin ~]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root   // 有错误时发邮箱给root
HOME=/
# 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

4:anacron可唤醒停机期间的工作任务

//不是单独的服务,是对crontab的补充,在关机的期间内,无法进行例行性工作,通过anacron工具,可以在开机时检测停机期间需要进行但却没有进行的crontab任务,并执行

  • 根据目前时间与上次运行时间戳的对比,差异时间大于或等于工作运行周期,就会进行acrontab未进行的工作调度


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章