系统延时任务
1.at 命令
[root@client ~ ]# at 12:12
at> echo hello world
at> <EOT>
job 15 at Sun Oct 29 12:12:00 2017
at -l --> 列出延时任务id(必须要在命令执行的时间之前,否则无法列出)
at -r 任务id --> 删除此id的任务(必须要在命令执行的时间之前,否则无法删除)
at -m --> 让无输出的命令产生邮件
at -M --> 让有输出的命令不产生邮件
at -c 任务id --> 查看此id的延时任务的执行动作
at -f 文件 --> 用文件内记录的命令作为延时任务的执行命令
2.at命令的使用控制
默认系统中全部用户都有执行at命令的权利,那么如何设定at命令的黑白名单呢?
1>.用户黑名单(默认情况下,系统中是存在用户黑名单的,黑名单默认情况下为空)
/etc/at.deny --> 用户黑名单,此名单默认为空,并且在白名单存在时黑名单失效
vim /etc/at.deny
student --> student用户使用at命令的权限被禁止
2>.用户白名单
默认系统中是不存在at命令的白名单,但是当白名单出现时,系统中除白名单中出现的用户以及root用户外,其他用户均不能执行at命令。
/etc/at.allow --> 用户白名单,当白名单出现时,黑名单失效
vim /etc/at.allow
westos --> 除westos用户以及root用户以外,其他用户均不能执行at命令
student用户依然不可以执行at命令
3.cron命令
1>.cron这个程序是由crond.service服务提供
2>.crontab -e -u 用户名称(可以不写) --> 创建当前用户的cron任务
分钟 小时 天 月 周 事件
58 06 * * * rm -rf /mnt/* --> 每天6:58分删除mnt中的所有内容
58 06 1,15 * * rm -rf /mnt/* --> 每月的1 号和15号的6:58分删除mnt中的所有内容
58 06 1-15 * * rm -rf /mnt/* --> 每月的1 号到15号的6:58分删除mnt中的所有内容
58 06 1,15 3 * rm -rf /mnt/* --> 3月的1 号和15号的6:58分删除mnt中的所有内容
58 06 1,15 3 3 rm -rf /mnt/* --> 3月的1 号和15号以及3月的所有周三的6:58分删除mnt中的所有内容
58 06-17 * * * rm -rf /mnt/* --> 每天6点到17点,以及每小时的58分删除mnt中的所有内容
*/30 06-17 * * 1-5 rm -rf /mnt/* --> 周一到周五的6点到17点每隔30分钟删除mnt中的所有内容
注意:写入程序的时间和事件是永久保存的
测试:
crontab -l --> 列出当前用户的cron任务
crontab -r --> 删除当前用户的cron任务
/var/spool/cron/* --> cron任务记录文件存放位置
4.cron的黑白名单
默认情况下系统中只存在黑名单,当白名单被建立时,黑名单失效。
1>.黑名单
/etc/cron.deny --> 在此名单中的用户不能执行crontab命令
vim /etc/cron.deny
student --> student用户不能执行crontab命令
2>.白名单
/etc/cron.allow --> 用户白名单,当此名单出现时,除名单中的用户以及root用户以外其他用户均不能执行crontab命令
touch /etc/cron.allow --> 建立白名单
更改白名单,添加westos用户
5.用文件的方式执行crontab命令
1>.创建文件
vim /etc/cron.d/westos
测试执行:
2>.创建脚本,用脚本可以直接修改/etc/cron.d/westos文件里的命令,并给脚本添加可执行的权限