Linux例行性工作

2017-11-08  本文已影响0人  凹凸曼_ebb9

Linux工作调度的种类:at,cron

两种工作调度的方式:

1、一种是突发性的,这次昨晚就不会在做,也就是单次执行的工作

2、另一种是例行性的,也就是没过一段时间就会执行一次的工作

at:可以处理只执行一次的指令

crontab:crontab这个命令所设置的命令会一直执行下去。

实际运行单一工作调度

at [-mldv] Time

执行at会进入所谓的at shell环境,从而执行多条命令

atq:查询目前主机上有多少的at工作调度

atrm[jobnumber]删除某个工作

batch:系统有空时才进行后台任务,有空的意思是说它会在CPU工作负载小于0.8的时候,才会进行你所执行的工作

循环执行的例行性工作调度

Linux通过crontab来进行循环的例行性工作调度,当用户使用crontab这个命令来新建工作调度之后,该项工作就会被记录到/var/spool/cron/里面,而且是以账号来作为判别的。

crontab的语法:

crontab [-u username] [-l|-e|-r]

-u:只有root才能执行这个任务,也即帮其他用户新建/删除crontab工作调度

-e:编辑crontab的工作内容

-l:查阅crontab的工作内容

-r:删除所有的crontab的工作内容,若仅仅需要删除一项,则用-e去编辑即可

若第一次执行crontab,则需要编辑crontab的配置方式,可通过命令select - editor来修改

举例:用dmtsai的身份在每天的12:00发信给自己

crontab -e进入编辑模式

0          12      *          *         *    mail dmtsai  -s  "at 12:00"</home/dmtsai/.bashrc

分         时     日        月        周 <==============命令串=================>

*(星号):代表任何时刻都接受

,(逗号):代表分割时间段,举例0    3,6    *   *    *代表要执行的工作时间为3:00和6:00

-(减号):代表一段时间范围内

/n(斜线):代表每个n个单位,举例来说  */5     *    *     * command就代表每5分钟执行一次

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

crontab -e是针对用户的cron来设计的,如果是系统要执行的crontab,则只要编辑/etc/crontabb这个文件即可

通过cat /etc/crontab查看其内容

可以看到和用户的crontab -e不同的是,在执行时间后面加了一个执行身份的选项

下面我们再来说一下run-parts,run-parts的功能是执行后面所跟目录里的所有文件,因此对于/etc/crontab来说,它有两种执行命令的方式:1、直接执行命令,eg:01 * * * dmsai mail -s "testing" kiki < /home/dmtsai/text.txt  2、以目录方式执行,eg:*/5 * * * * root run-parts /root/runcron

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

anacron并不是用来代替crontab的,anacron存在的目的是处理非24小时为单位或者是在开机后立即进行anacron的操作,它会去检测停机期间应该进行但是没有进行的crontab任务,并讲该任务执行一遍然后anacron就会自动停止了。

cat /etc/anacrontab返回如下:

现在我们来解释一下第一行,它是这样运行的

1、由/etc/anacrontab分析到cron.daily这项工作名称的天数为1天;

2、由/var/spool/anacron/cron.daily取出最近一次执行anacron的时间戳;

3、由上个步骤与当前的时间比较,差异天数为1天以上(含1天),就准备执行命令;

4、若准备执行命令,根据/etc/anacrontab的设置讲延迟5分钟;

5、延迟时间过后,开始执行后续命令。

6、执行完毕后,anacron程序结束。

上一篇 下一篇

猜你喜欢

热点阅读