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程序结束。