系统延时与定时任务

来源:互联网 发布:学生双肩包推荐 知乎 编辑:程序博客网 时间:2024/05/21 19:39

at:

关于at的插话:    可以指定某一任务在将来的特定时间运行,该作业可能是一次备份、系统的检查或者特定时间发送的通知。那些花很长时间才可完成的作业正适合at命令,仅需要使用at命令设置为在一分钟或两分钟后执行。然后,您便可以进行安全注销,因为,该任务会在与shell会话断开的情况下运行  at命令必须指定任务应运行的时间,该时间可以是具体的时间或日期(例如,星期一 1000 pm 或 715号),也可以是当前时间的相对时间(现在时间加上5min,现在时间加上3天或400 pm 加上1周)。 通过添加选项,您可以在任务完成是发送邮件(-m),或者从文件中读取任务(-f 文件),从而无需通过标准输入进行   在键入at命令行之后,按Enter并继续键入作业中包含的其他命令,任务可由多个命令组成,在完成键入要运行的命令时,在单独出现的一行中按Ctrl+d 完成任务

一、at的常用命令

at + time 

这里写图片描述

at -l | atq #查看当前任务,两条命令的效果是一样的

这里写图片描述
atrm | at -d #取消指定任务
at -c 任务id #查看任务内容

at -f 文件名 #直接执行文件中的内容

这里写图片描述

at -M  #Never send mail to the user
at -m  #send mail to the user when the job has completed even if there was no output

这里写图片描述

二、设置权限

1.设置用户黑名单

su - root  #首先,切换身份到root修改at的黑名单vim /etc/at.deny:wq

这里写图片描述

2.设置用户白名单

*前方高能:其中白名单一经被修改,没有在白名单上出现的人(除了root)都不能使用at命令
su - root  #首先,切换到root身份,编写at的白名单vim /etc/at.allow

这里写图片描述

BUT!!!at命令都是一次性的,这一点很讨厌。所以,下面我们要说的是可以进行周期性永久的设定!!!

三、管理定时任务

插话:   cron设备管理必须按计划定期重复运行的程序,后台程序crond每分钟唤醒一次,以允许嗯计划的任何任务用户使用crontab命令计划个人任务,系统管理员可以在系统范围配置文件中设置任务

1.实验前的检查工作

systemctl status crond.service  ##查看crond.service是否正常工作

这里写图片描述

2.浅谈cron的分时天月周

 1)时间所属范围    field                            allowed values-------------                ----------------------------------   minute                                 0-59    hour                                  0-23 day of month                             1-31    month                                 1-12 day of week                       0-70 or 7 is Sunday)ps:月份和星期也可以使用名字,
2)时间书写格式   1* 2* 3* 4* 5* command   注释:   1*-----------------分钟   2*-----------------小时   3*------------------天   4*------------------月   5*------------------周

举例:
这里写图片描述

3)单个用户使用称为crontab(cron表)的文本文件登记任务crontab -u username -e   ##发起任务                    -r   ##撤销任务                    -l   ##显示任务

3.1.1)在/test目录下建立文件,使用crontab创建好相应的命令后,观察命令是否会如期动作
这里写图片描述
3.1.2)实验效果如下:
这里写图片描述
3.2)撤销任务与显示任务的实现效果如下:
这里写图片描述

3.3)编辑相应的配置文件达到实现任务的结果

插话:    那么问题来了,前面所述的方法是以文件名来区分动作的执行者,那么,有没有一种方法可以让所有用户的命令放在一个文件中呢!答案是肯定的!!    而这种方法则需借助于crond.service,并且,他还具有"隐身"的功能,用上文所述的方法是监测不到他的行踪的,但是,任务还是会如期完成!
借助于crond.service实现定时任务:step1:  cd /etc/cron.dstep2:  vim filename   ##编写相应的文件,格式在下图实验中有详解

打开/test/*的监视窗口,root身份编辑test文件使其每分钟删除一次/test/目录下的所有文件,同时,使用crontab查看root的任务表,发现确实没有记录! 然后,使用crontab在/test/下每分钟建立一个名为testfile的文件
这里写图片描述
Wait a minute…
这里写图片描述

last but not the least......      在/etc/cron.d中编写的文件,如果执行者是普通用户,最好给相应的操作目录满权限~

四、系统中临时文件的处理方法

系统中服务在正常运行时会产生临时文件,这些文件的存放位置在
/usr/lib/tmpfiles.d/

文件示例:vim /usr/lib/tmpfiles.d/hx.confd /test/hx 700 root root 5s##格式:文件类型 文件绝对位置 权限 文件所有人 文件所有组  滞留时间##要求:必须在/usr/lib/tmpfiles.d/中,并且,以.conf结尾watch -n 1 ls -lR /test/*systemed-tmpfiles --create /usr/lib/tmpfiles.d/*   ##扫描临时文件systemed-tmpfiles --clean /usr/lib/tmpfiles.d/*   ##清除临时文件

这里写图片描述

这里写图片描述

小测试:建立/mnt/demo目录,此目录中的文件必须存在两分钟以上的才会被清理,同时,系统每分钟清理/mnt/demo一次(要求:用脚本实现)

这里写图片描述

原创粉丝点击