——
在linux的学习过程中,有时需要我们延迟任务和定时去完成任务。下面将对延时和定时任务的设定加以说明。
#1.系统延时任务#
at命令发起的延时任务都时一次性的,
#定时任务时永久的,定时任务程序crond,在系统中每分钟做任务扫描.
第一种发起方式是通过命令来实现的。常用的有三种:
crontab -u username -e ###表示设置一个定时任务,以username的身份运行###
crontab -u username -r ###表示删除设置的定时任务###
第二种发起方式是通过编辑文件来实现的
systemd-tmpfiles --clean /usr/lib/tmpfiles.d/* ##清理临时文件
#1.系统延时任务#
at命令发起的延时任务都时一次性的,
常用的at命令有 at + time
at + time
[root@maillinux ~]# at 3:07
at> touch file ##延迟动作
at> <EOT> ##ctrl+d表示发起动作
job 3 at Tue Jan 23 03:07:00 2018
[root@maillinux ~]# at 3:07
at> touch file ##延迟动作
at> <EOT> ##ctrl+d表示发起动作
job 3 at Tue Jan 23 03:07:00 2018
还有一些基本命令如下:
我们在了解这么多延时指令,在使用"at"命令时,会发现不管是普通用户还是超级用户,都可以对主机发起延迟命令,如下图所示,然而在有些情况下,需要对延迟命令的执行权限进行限定。
##用户黑名单,在此名单中出现的用户不能执行at命令
给里面写上student普通用户,那么就把student加入了黑名单
我们来看一下效果
用户被限定了,不能执行该命令,其他没在名单里的用户,可以执行此命令。
命令执行的白名单自然就是允许一些用户执行延迟命令了,值得注意的是,在系统中,这个白名单文件并不存在,需要自己建立建立一个"/etc/ra.allow"文件,这个文件一旦出现,那么所有用户将不能再执行延迟命令,例如下图,文件建立后,没有再黑名单中的tian用户也不能执行延迟命令了。在这个文件中写入"student",那么student用户可以使用延迟命令。
/etc/at.allow ##用户白名单,名单默认不存在,但名单一旦出现,黑名单失效
#定时任务时永久的,定时任务程序crond,在系统中每分钟做任务扫描.
第一种发起方式是通过命令来实现的。常用的有三种:
crontab -u username -e ###表示设置一个定时任务,以username的身份运行###
crontab -u username -r ###表示删除设置的定时任务###
crontab -u username -l ###表示查看设置的定时任务###
crontab 格式
分钟 小时 天 月 周
eg:
第二种发起方式是通过编辑文件来实现的
vim /etc/cron.d/filename
分钟 小时 天 月 周 用户动作
* * * * * root rm -fr /mnt/* #超级用户每分钟清里一此/mnt
定时任务的执行权力设定。与延迟任务的执行权力设定类似,定时任务执行权力的黑名单设定是编写"/etc/cron.deny"文件,白名单设定是编写"/etc/cron.allow"文件,白名单文件同样是不存在的,需要自己建立。
####3.系统临时文件的管理####
系统在使用服务是,会产生临时文件,这些文件在服务使用完成后或者一段时间后就没有用了,这时就需要对系统产生的临时文件进行管理,及时清除不必要的文件。
在清理文件时,需要先进行设置文件的存在于系统的时间,设置是通过编写"/usr/lib/tmpfiles.d/*.conf"文件来实现的,其中"*"是文件的名称,可以自行设置,但是必须以".conf"结尾。例如在此文件中写入"d /mnt/we 1777 root root 10s",其中"d"是文件类型,"/mnt/we"是清理目录,"1777"是执行权限,"root"和"root"是文件所有人和文件所有组,"10s"是文件存在时间,结合起来,上述内容表示"在/mnt目录下有一个所有人和所有组都是root并且权限为1777的目录tian,该目录内的文件可以存在的时间为5s"。这个tian目录在系统中是不存在的。
在清理文件时,需要先进行设置文件的存在于系统的时间,设置是通过编写"/usr/lib/tmpfiles.d/*.conf"文件来实现的,其中"*"是文件的名称,可以自行设置,但是必须以".conf"结尾。例如在此文件中写入"d /mnt/we 1777 root root 10s",其中"d"是文件类型,"/mnt/we"是清理目录,"1777"是执行权限,"root"和"root"是文件所有人和文件所有组,"10s"是文件存在时间,结合起来,上述内容表示"在/mnt目录下有一个所有人和所有组都是root并且权限为1777的目录tian,该目录内的文件可以存在的时间为5s"。这个tian目录在系统中是不存在的。
systemd-tmpfiles --clean /usr/lib/tmpfiles.d/* ##清理临时文件
上述的系统临时文件管理清理命令需要自己输入,可以和定时任务结合使用,使得自动清理临时文件。例如需要在"/mnt"下建立一个"quit"目录,其中的文件可以存在2min,但是系统将每分钟清理一次这个目录。为了方便,这些步骤可以用脚本来完成。输入"watch -n 1 ls -Rl /mnt"来观察这个目录的变化。
使用脚本文件后发现 /mnt 目录下会出现一个quit目录,在"4:50:00"在"quit"目录下建立5个文件,这五个文件在"4:52:10"全部被清理。是不是很神奇呢~赶快动手试试吧!
以上就是本章要点,延迟任务和定时任务以及系统临时文件的管理及应用。