linux系统中的延时任务与定时任务管理
延时任务与定时任务的简单管理
摘要:本文主要介绍了延时命令at的使用方法、限定普通用户的不正确延时任务、用户级定时任务的配置、系统级定时任务的配置,最后用临时文件生成策略配置的实验证明了crond.service、anacron和定时任务之间的联系。
一、延时任务的设置:
##1.设置定时任务的命令格式:
at 时间点 (输入完左边的命令回车) ############ 延时任务到该时间点执行
at> ## (输入你想延时进行的动作后 回车)
at> . ## (可设定多个延时动作)
at> ctrl + d ##(完成延时以及延时动作设定,退出)
eg: at 9:20
at now+延时时间大小 ########## 从现在起延长多长的时间
at> ## (输入你想延时进行的动作后 回车)
at> . ## (可设定多个延时动作)
at> ctrl + d ##(完成延时以及延时动作设定,退出)
eg: at now+1min
注意:设定延时和定时的最小单位为分钟。
##2. 延时任务的查看和管理命令:
# at -l ######### 查看当前的延时任务
# at -c number ######## 查看job号为number的延时任务的详细信息
#
at -r number ##### 删除job号为number的延时任务
二、对普通用户进行延时任务设置的限制:
这个知识点可以用来 屏蔽有些普通用户不恰当的延时任务。
1.:首先用两个普通用户执行at命令,都可执行:
2.把student用户添加到黑名单:
测试:
3.在/etc/下新建at.allow,即白名单,但是白名单中先不添加任何用户:
测试:发现所有普通用户都不能登陆:
实验结果说明只要不在该文件中的普通用户,都被限制使用延时权限。
4.在白名单allow中添加student用户:
用student和sporai这两个用户测试:发现student用户可以使用延时命令at,而不在白名单的用户aporai则不能使用延时命令,如下:
通过实验发现:(1)在该名单中的用户能够使用延时命令;(2)当deny和allow文件同时存在时,只有allow一个文件起作用。
注意!!!以上的实验针对的对象都是普通用户,对超级用户没有限制。
三、用户级定时任务的配置:
在配置定时任务之前,我们先来想一个问题,定时任务意味着什么?其实这和我们平时早上定的起床闹钟是一样的,它们都有个特点,就是每天到了定时的那个点就开始执行规定的动作,那么既然每天都执行,那势必是要将动作写入配置文件的,这和延时任务不同,延时任务是用命令完成的,他的动作只被记录在内存中,一关机重启,任务动作就会失效。
###配置定时任务文件:
#1.直接使用下方的命令进入配置文件:
crontab -e ######### 在哪个用户的环境下就为哪个用户配置定时任务
crontab -e -u username ########## 为指定的用户配置定时任务
#2.编写配置文件:
##在这之前我们先看一张图:
在每个位置要表达时间信息时,有几个很实用的连接符,下面一一介绍:
“ * ” :代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。
“ , ” : 逗号隔开的值指定一个列表范围,例如在小时字段里为“1,2,5,7”,则表示每天的第1、2、5、7小时这些点在满足其它语法字段的条件下执行定时动作。
“ - ” : 两个整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”。
“ / ” : 可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。
同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次
##进入配置文件后,编写自己想要进行的定时动作:
上面的定时任务表示:每分钟都将最新产生的日志放入file2这个文件中:
##我们编写好的定时任务的配置文件会被放到 /var/spool/cron/ 目录下,我们可以在该目录下查看我们编写的定时任务的配置文件。
也可以使用 crontab -l 产看配置的定时任务:
四、用户级定时任务的用户限制
可以在/etc/cron.deny中配置黑名单(系统默认存在的文件)
可以在/etc/cron.allow中配置白名单(需要用户自行创建)
用户级定时任务的用户限制和我们上面延时任务的用户限制思路一模一样,这里不再赘述,读者可以参考上方第二部分内容。
五、系统级的定时任务的配置:
##1.配置系统级定时任务和用户级定时任务相比,有三点不同:
(1)配置方式和文件位置———我们直接使用vim /etc/cron.d/westos 配置定时任务。
(2)格式和配置用户级定时任务差不多,不同处在于要在配置文件中去指定是哪个用户的定时任务。
我们可以在/etc/crontab这个文件中去查看配置格式和要求,如下图:
(3)这里面配置的定时任务不能用 crontab -l 查看,只能用cat /etc/cron.d/westos的方式。
##2.配置步骤和结果如下所示:
六、临时文件的管理策略:
临时文件是什么?举个例子:如果你面条的时候需要什么才能协助才能完成吃饭这个吃面条这个过程,当然你至少得需要一个碗和一双筷子吧,那你吃完面条之后碗和筷子就不需要它了,linuc系统中也是一样的,系统执行任务时,它需要很多临时文件的协助去完成某个任务,然而任务完成后有些文件就不需要了,剩下的文件就没用了,但它会占用系统的资源,所以它需要被定期清除。
我们的windows系统为什么会用的时间越长越卡,就是因为大量的临时文件的遗留占用系统资源,而linux系统为什么不卡,就是因为linux系统有健全的定时机制,会定期清理系统残留的临时文件。
但在清理临时文件时有一个问题,有些临时文件还不能清除,所以就需要制定一些策略去防止这种情况的发生。
在做实验开始之前,我们先要有下面的思维: 就是crond服务提供的一个anacron功能,他的作用是监督crontab的定时任务
crond.service-------------------------anacron工具----------------------------监督定时任务
实验步骤:
#1.第一步,我们进去/usr/lib/tmpfiles.d 这个目录去配置临时文件管理策略:
这里为了表现实验结果,我们设置在245room这个目录下产生的文件,定时30天内不能被删除。
#2.然后,我们用systemd-tmpfiles --create /usr/lib/tmpfiles.d/* 这个命令,它的含义是以配置的策略创建临时文件,
那么根据配置的策略,30天内,系统的定时任务不能删除该目录,那当然也包含不能删除它下面产生的文件的意思:
systemd-tmpfiles --clean /usr/lib/tmpfiles.d/* ###清除策略允许的临时文件
测试发现在策略之内的时间,系统的定时任务不能清除245room下的文件:
#3.为了实验效果,我们将定时时间改为2s,再去尝试用定时命令去清除245room目录下的文件,结果如下:
上文中SuZhang那个文件已经被清除了。
还有一点要注意,如果我们关掉了主机,那么定时任务将失效;但在开机的那一刻crond.service会自己启动,它提供的anacron这个程序会提供监察监督定时任务的功能,它会在开机的那一刻找到未执行的定时任务,然后告诉系统,系统再命令定时任务去执行动作!