仅执行一次的工作调度—at/batch
服务
atd
服务启动
/etc/init.d/atd start
at运行方式
/etc/at.allow
首先寻找at.allow,在其中的用户才可以使用at,其他人不可以使用(即使不在at.deny中)
/etc/at.deny
没有at.allow时,不在at.deny中的用户可以使用at
at运行
at [-mldv] TIME
at -c 工作号码
m 当at工作完成后,即使没有输出信息,也给用户发送email
l 小写l,相当于atq,列出目前系统上面的所有at调度
d 相当于atrm,取消一个在at调度中的工作
v 使用较明显的时间格式输出at调度任务列表
c 列出该项工作的实际命令内容
TIME 时间格式,定义at工作执行时间
HH:MM 今日的HH:MM,若已超过,则明日
04:00
HH:MM YYYY-MM-DD
04:00 2009-03-17
HH:MM[am|pm] [Month] [Date]
04pm March 17
HH:MM[am|pm] + number [minutes|hours|days|weeks]
04pm + 3 days
[ctrl]+d结束输入
例:
at now + 5 minutes
/bin/mail root -s "test at job" < /root/.bashrc
[ctrl]+d
at 23:00 2009-03-17
/bin/sync
/bin/sync
/bin/shutdown -h now
[ctrl]+d
at特点
1. at的执行与终端机环境无关,所有的stdout和stderr会传送到执行者的mailbox中,要输出信息可以使用"echo "Hello" > /dev/tty1 "
2. 系统会将at工作独立出bash环境,直接交给系统的atd程序接管。
batch
执行方式与写法同at,会在系统负载小于0.8时候执行
循环执行的例行性工作调度-crontab
服务
crond
启动
系统默认启动
服务运行方式
/etc/cron.allow
不在这个文件中的用户不可使用crontab
/etc/cron.deny
在这个文件当中的用户不可使用crontab
日志记录
/var/log/cron
crontab使用
crontab [-u username] [-l|-e|-r]
u 只有root才可使用,帮助其他用户建立crontab任务
l 查阅crontab
e 编辑crontab
r 删除所有的crontab,只删除一项,使用-e编辑即可
crontab编辑
/etc/crontab
两种任务执行方式:
让系统每2分钟去执行/etc/cron.min目录下的所有可执行文件
*/2 * * * * root run-parts /etc/cron.min
每5分钟执行程序
*/5 * * * * root /bin/mrtg /etc/mrtg/mrtg.cfg
唤醒停机期间的任务-anacron
用途:
以一天、七天、一个月为期,或者在开机后立刻检测在停机期间应该进行但是没有进行的/etc/anacrontab中定义的任务,并将该任务执行一遍,然后anacron自行停止,可与crontab结合,达到每天执行
使用
anacron [-sfn] [job] ..
anacron -u [job]
s 开始连续执行各项工作job,会依据时间记录文件的数据判断是否进行
f 强制进行,而不去判断时间记录文件的时间戳
n 立刻进行未进行的任务,而不延迟等待时间
u 仅更新时间记录文件的时间戳,不进行任何工作
job 由/etc/anacrontab定义的各项工作名称,默认cron.daily、cron.weekly、cron.monthly
服务运行方式
/etc/anacrontab
定义每日任务、每周任务、每月任务的执行延迟时间
原理
从/etc/anacrontab分析到crondaily这项工作名称的天数为1天
从/var/spool/anacron/cron.daily取出最近一次执行anacron的时间戳
将第二步得到的时间与目前的时间比较,差异为第一步的天数1以上(包含1),就准备执行命令
读取延迟时间
延迟时间过后,执行后续命令
使用
根据需求添加日脚本、周脚本、月脚本
在/etc/cron.daily、/etc/cron.weekly、/etc/cron.monthly中加入同步时间戳的脚本(如果不存在)
/etc/cron.daily/0anacron
if [ ! -e /var/run/anacron.pid];then
anacron -u cron.daily
fi
/etc/anacrontab定义执行延迟时间
设置anacron开机启动并且根据需要在crontab中调度anacron执行时间