############################unit3##############################
系统延迟及定时机制
¥¥¥¥¥一,计划定期任务
at命令
1,at命令可以指定某一任务在将来的特定时间运行。该作业可能是一次备份,对你系统的检查或者特定时间发送的通知。那些需要花费很长的时间才可能完成的作业正适合at命令。at命令将任务设置为在一分钟或两分钟之后运行。然后你便可以安全注销,因为该任务会在与shell会话断开连接的情况下运行。
2,at命令必须指定任务应运行的时间。该指定可以是具体时间和/或日期(例如星期一,10:00pm或7月15日)。也可以时当前时间的相对时间(现在时间加上5分钟,现在时间加上3天或4:00pm加上1周)通过添加其他选项,你可以在任务完成时发送邮件(-m),或者从文件中读取任务(-f文件),而无需通过标准输入进行
3,在键入at命令之后,按Enter并继续键入作业中包含的其他命令。任务可由多个命令组成。在完成键入要运行的命令时,在单独出现的一行中按Ctrl+d完成任务。
¥¥¥¥¥二,at命令示例
[root@serverx ~]#at now+2min
at>echo"hello from the at command">
/dev/pts/0
at> <EOT>
job 4 at 2011-08-10 14:05
注:在将某一at作业设置为运行之后,可以通过使用atq命令列出作业编号以及次数。若要查看作业中所包含的命令,键入at-c#(#号为作业编号)。键入Atrm#(#号为作业编号),则是删除指定作业。
(如图一,二)
(如图三)用mail可以查看所执行的部分类型的信息。
(如图四,五)用/etc/at.deny来进行限制某些用户执行at命令。
¥¥¥¥¥三,管理定期任务
1,cron ###设备管理必须按计划进行定期重复运行的程序。后台程序crond每分钟唤醒一次,以运行的任何任务用户使用ctrontab命令计划个人任务。系统管理员可以在系统范围配置文件中设置任务。
2,单个用户使用称为ctrontab(cron表)的文本登记任务
1)crontab -l 列出文件
2)crontab -r 删除文件
(如图十)
3)crontab -e 编辑文件
4)crontab -e 使用默认编辑器时vim
(如图六)不用指定用户,一般用户使用。
(如图九)
¥¥¥¥¥四,cron时间表示方式
1* 2* 3* 4* 5* command
1* ##分钟
2* ##小时
3* ##天
4* ##月
5* ##周
¥¥¥¥¥五,时间表示示例
cron语法
05 * * * * ##每小时整点过5分钟
05 02 * * * ##每天2:05am
30 08 01 * * ##每月第一天8:30am
00 07 25 12 * ##12月25日7:00am
30 16 * 8 5 ##每个周五4:30pm
*/5* * * * ##每5分钟(0,5,1..45,50,55)
*/10 9-17 1, 15 * * ##在每月第一天和第十五天9:00am至5:00pm之间(在5:00pm不会运行,最后一次运行是在4:50pm),每隔10分钟。
0 0 1 jan 0 ##1月1日午夜和1月的每个星期日
¥¥¥¥¥六,ctrontzab 注意事项
1,属于系统的任务通常保存在/etc/crontab 文件中,而不是使用crontab -e 编辑保存在个人文件中。更好的做法时用文本编辑器创建crontab文本并保存到/etc/cron.d中(避免更新系统软件包cronie时出现问题)。
2,对于需要每天,每周或每月运行一次的脚本,可以直接将其设置为可执行文件,并保存在/etc/cron.
{daily,weekli,momthly}中相应目录下,这些任务由/etc/anacrontab配置的系统anacron服务运行anacron是cron的集成组件,用于更好地管理作业,并确保在作业因计算机关闭而未运行的情况下,在系统引导后运行作业。
(如图七,八),只有超级用户可以使用。
¥¥¥¥¥七,cron 权限设定
1,在系统中默认所有用户可以设定cron
2,用户黑名单 /etc/cron.deny
(如图十一)
3,用户白名单 /etc/cron.alow
(如图十二)
¥¥¥¥¥八,系统中的临时文件(垃圾)
1,系统中服务在正常运行时会产生临时文件
2,在系统中/usr/lib/tmpfiles.d/表示服务的临时文件存放位置
3,文件示例
(如图一)
4,vim /usr/lib/tmpfiles.d/test.conf
d /run/test 0700 root root 5s
(如图二,三)
¥¥¥¥¥九,控制系统中的临时文件
systemd-tmpfiles
--create /usr/lib/tmpfiles.d/test.conf
--clean /usr/lib/tmpfiles.d/test.conf
(如图四,五六)