1. at指令的定时和延时任务:
命令格式:at 时间 (回车后会换行输入待执行的命令,命令输入完毕按ctrl+d会建立定时任务或延时任务)
定时任务:at 指定时间 举例:at 01:31 在1:31时候执行
延时任务:at 延时时间 举例:at now+1min 一分钟以后执行
1.1 定时任务:1:31分时在/mnt目录下建立文件file1
为了便于定时任务效果的查看,使用watch命令设定每一秒进行对/mnt目录的监控:
设定时间和命令后执行ctrl+d可以建立任务,其中1为任务编号:
效果:在01:31时,可以在监控界面里看到文件已经被建立即任务已经准时执行
1.2 延时任务:在一分钟后即01:33建立文件file22:
效果:文件file22被建立:
1.3 其他的at常用命令
1> at -c 编号 #查看即将进行的任务的详细信息:
在02:00设定一个任务,可以看到任务编号为3,at -c 3 可以查看任务的内容,任务内容会在指令结果的最后面显示:
可以看到任务的内容为建立文件file3:
2> at -l 编号 #查看即将执行的任务时间:
3> at -r 编号 #取消即将执行的任务
可以看到任务取消之后,无法再查看到任务:
1.4 使用黑名单和白名单进行设置指定用户对at指令的使用权限:
黑名单 /etc/at.deny
白名单 /etc/at.allow
当空白白名单生效时,所有普通用户不得执行at操作
白名单存在时,系统不识别黑名单
举例:
在/etc/目录下建立黑名单:
在黑名单中写入限定权限的用户名称wetsos和linux,退出保存后该名单里面的用户无法使用at指令:
切换到黑名单中的普通用户执行at指令,显示用户的at指令不被允许使用:
有黑名单的存在,就有白名单的存在,黑名单里面的用户不能使用at指令,白名单指只有在白名单里面的用户可以执行at指令(超级用户除外),当白名单为空时,所有普通用户不得执行at指令。解除白名单的限制则需要删除掉白名单这个文件:
可以看到白名单里面的westos和linux用户可以执行at指令。
刚才在执行黑名单时,黑名单里面的禁止用户是westos和linux,但当同样的用户放在白名单时,黑名单里面与白名单相同名称的用户的权限限制将被解除,也就是说白名单的优先级比黑名单高,当白名单存在时,相同名称的黑名单用户限制将失效。
2. crontab指令的定时任务:
crontab -u root -e #以超级用户身份设定定时文件
crontab文件中的星号意义:
分钟 小时 天 月 周
* * * * * #每时每刻执行
* 8-17 * * * #每天的8点到17点执行
*/2 8-17 1,15 * * #每月的1号和15号的8点到17点,每2分钟执行一次
*/2 08-17 1,15 3-5 3 #3月到5月的每个周三,1号,15号的8点到17点,每两分钟执行一次
在crontab -u root -e指令执行后的界面里,编辑定时任务的具体内容,其中分为5部分:分钟 小时 天 周 月 ,不特定强调的部分用*代替:
2.1 crontab -u root -l #查看即将执行的定时任务
在02:03时指定文件被建立表示任务已经执行:
2.2 crontab -u root -r 消root用户即将执行的定时任务
cat /var/spool/cron/root #查看用户级别的定时任务
同样crontab指令的权限设置也可以通过黑名单和白名单来决定,设置方式与at指令的内容和情况相同:
黑名单:/etc/cron.deny
白名单:/etc/cron.allow
同样还有使用脚本建立定时任务的方式:
vim/etc/cron.d/westos #在/etc/cron.d目录下建立wetsos这个脚本
编辑脚本内容:
* * * * * root touch /mnt/file1 #以超级用户的身份每分钟建立文件 (在crontab -e 命令中,不需要强调用户,一般默认为执行指令的用户,但在写入指令时需要加上指令所在的目录/bin。在cron.d脚本中需要强调用户,指令不需要添加目录/bin)
每天的02:05以超级用户的身份建立文件:
查看任务:cat /etc/cron.d/westos
2.3. 指定用户所建文件的定时删除:
1. vim /usr/lib/tmpfiles.d/westos.conf
编辑:d /mnt/westos 1777 root root 5s #5s之后超级用户删除/mnt/westos目录下的文件
2 systemd-tmpfiles --creat /usr/lib/tmpfiles.d/* #执行脚本文件
3 touch /mnt/westos/file{1..5} #在指定目录下建立文件
4 systemd-tmpfiles --clean /usr/lib/tmpfiles.d/* #脚本文件执行后,新建的超过规定时间的文件将被删除