例行性工作:系统在某个时间点会自动进行的工作
只执行一次就结束调度: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 删除工作]
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/crontab:root可直接编辑此文件写入工作
[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未进行的工作调度
本文出自 “Call me Boxin” 博客,请务必保留此出处http://boxinknown.blog.51cto.com/10435935/1664419
原文地址:http://boxinknown.blog.51cto.com/10435935/1664419