Linux系统中 延时任务和定时任务的设定

第一个: Linux系统中 延时任务的设定:

at 命令的简介:

计划任务,在特定的时间执行某项工作,在特定的时间执行一次,需要安装at服务,apt-get install at

at允许使用一套相当复杂的指定时间的方法。
● 能够接受在当天的hh:mm(小时:分钟)式的时间指定。假如该时间已过去,那么就放在第二天执行。 例如:04:00
● 能够采用12小时计时制,即在时间后面加上AM(上午)或PM(下午)来说明是上午还是下午。 例如:12pm
● 能够指定命令执行的具体日期,指定格式为month day(月 日)或mm/dd/yy(月/日/年)或dd.mm.yy(日.月.年),指定的日期必须跟在指定时间的后面。 例如:04:00 2009-03-1
● 能够使用相对计时法。指定格式为:now + count time-units ,now就是当前时间,time-units是时间单位,这里能够是minutes(分钟)、hours(小时)、days(天)、weeks(星期)。count是时间的数量,几天,几小时。 例如:now + 5 minutes 04pm + 3 days
● 能够直接使用today(今天)、tomorrow(明天)来指定完成命令的时间。

开始实验了解at命令吧:

基本命令如下:

at     时间         #设定延时任务的时间点

at     now+时间     #另一种设定演示任务时间的方式

at      -l          #查看所有已经设定的延时任务

at    -c+任务代号    #查看任务详情

at    -r +任务代号   #取消设定好的延时任务

ctrl     +d         #使任务生效!

话不多说开始实验吧:

在/mnt目录下建立10个westos文件:

监视这10个文件:

监视的效果如下:

设置在00:17分 进行 删除/mnt/底下的所有文件的延时任务;

在这里我们at 00:17 回车确定之后输入,需要输入我们想要进行的操作,需要按 crtl+d 执行命令才能生效!!!

方法1:

方法2:

观察实验结果:(可以看到00:17的时候删除了所有westos文件!)

新设定一个延时任务:用at -l 查看任务:(注,代号为2,因为上一个实验代号为1,虽然已经执行过了)

利用 at -c 2 查看2号任务的任务详情:

可以看到这是一个脚本文件,东西比较多,我们想观察的东西在最后面:


可以看到我们设定的任务内容:

在任务没有到执行时间之前我们可以通过 at +r +任务号 来取消任务:

2.延时任务的黑白名单:

 a:黑名单:配置文件为:/etc/at.deny,用户名字出现在黑名单里将不能使用at命令:

创建一个用户cool:

编写配置文件:(vim /etc/at.deny)

切换到cool用户 使用at命令可以看到:(被禁止使用at命令了)

将cool从黑名单中清除掉后发现cool用户又可以使用at命令了:

b:白名单:系统默认没有白名单的配置文件,需要我们自己创建一个/etc/at.allow文件:

我们将asuka用户放入白名单中,只有asuka用户可以使用at命令:『当然root超级用户没有影响』限制不到。

可以看到:(asuka可以,cool不可以)

注:白名单默认优先级高于黑名单,所以当黑白名单都存在,且当黑白名单里都有同一用户时,以白名单为基准!:

第二个Linux系统中定时任务的设定:

首先:定时任务是由cron.service提供的,首先得确认该服务是否开启:

可以看到本机里crond服务是开启的:

常用命令:

crontab -e   #编辑当前用户的定时任务(会将编写的文件存放到/var/spool/cron/username下)

crontab -u username -e   #在其他用户情况下编辑某一个用户的定时任务(仅root用户可以用)

任务编写格式:

*   *   *   *   *     +  命令   #其中*后可以跟 /数字,表示每隔数字个单位
分  时  日   月  周

eg:

每隔2分钟删除一次/mnt底下的文件

再比如:(04 * * * *  +操作 表示 每月每周每日每小时过五分钟执行一次操作!)

(04 02 * * *+操作 表示: 每月每周每日的凌晨2点过4分钟执行一次操作!)

(。。。

其中 - 表示  连续  , 表示 和的关系)

(* 9-10 1,14  * *表示每月每周的1到14号的 9到10点的每分钟执行什么操作)

@查看及取消定时任务:

查看:两种办法:

办法1:

办法2L

取消任务:

@与at命令相同定时任务也有黑白名单:

黑名单:/etc/cron.deny ,在黑名单里的用户不可以使用定时任务

创建出白名单:/etc/cron.allow(默认下所有用户全黑)

同at命令,白名单优先级高于黑名单,用户同时存在于两名单中,以白名单为基准!

#但这些定时任务都是系统开启的情况下才会生效的(比如我们设定今天9点reboot系统,如果我们今天的8:59关机了,就不会执行了,开机也不会执行)

所以我们需要定制系统级的定时任务:

    简介:

属于系统的任务通常保存在 /etc/crontab 文件中而不是使用  crontab -e 编辑保存在个人文件中。更好的做法是用文本编辑器创建 crontab 文件并保存到 /etc/cron.d 中 ( 避免更新系统软件包 cronie 时出现问题 ) 。 /etc/cron.d/crontab  文件在日期说明后另加一个字段 , 表示将运行作业的用户


对于需要每天、每周或每月运行一次的脚本 , 可以直接将其设置为可执行文件 , 并保存在 /etc/cron.{daily,weekly,monthly} 中相应目录下。这些任务由 /etc/anacrontab 配置的系统 anacron 服务运行  anacron 是 cron 的集成组件 , 用于更好地管理作业 , 并确保在作业

如果系统关闭,错过crontab的执行,则在开启系统时,anacron会检测是否有crontab漏执行,如果有则立即执行。
anacron命令检测是否有crontab漏执行,不是文件

 

实验:

在/etc/cron.d/目录下新建文件redhat,并且编辑redhat文件,设置定时任务:

在 01:37分删除/mnt底下所有文件:

/mnt底下的文件

开机可以发现文件被删掉了(不同于普通级别的错过时间就不再执行)

最后:临时文件的清理:

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

/usr/lib/tmpfiles.d目录下以.conf结尾的文件都是临时文件,编辑文件创建临时目录

实验:

编辑一个ccc.conf文件

vim /usr/lib/tmpfiles.d/ccc.conf

内容为:从左到右依次:(目录,目录名 ,权限,用户,组,目录中的文件的生效时间『当时间超出这个时间 就会清除文件』)

在westos下创建了file1 file2文件,过了8s开始测试

可以看到清除掉了(当时间不到8s时清除不掉)

没到8s清除不掉:

猜你喜欢

转载自blog.csdn.net/Asukaaaa/article/details/83834405