定时任务 && 例行任务

时间:2021-12-26 22:43:50

仅执行一次的工作调度—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执行时间