设定成功后“ ctrl + d "发起任务," ctrl + c " 取消。
------------------------------------------------------实验------------------------------------------------------
准备虚拟机aa,打开两个窗口,一个做监控!!
# watch -n 1 ls -l /mnt/ :监控命令
在/mnt/下建立10个新文件
# at 16:59:在16:50设定延迟任务
at> rm -fr /mnt/* :清空/mnt/的文件
at>
# at -l : 查看延迟任务
# at -r 7 :取消延迟任务
默认情况下,所有用户都可以执行延迟任务!
----------------------------------------------------------------实验-------------------------------------------------------
# man 5 at.deny :查询文件帮助
发现:如果at.allow文件存在就不再查看deny文件,如果allow文件不存在就查看deny文件!
默认情况下,所有用户都可以执行at。
编辑黑名单,将用户westos写进黑名单,发现westos无法执行at任务!!
建立白名单,白名单一旦建立,黑名单就会失效!只允许白名单内的用户和root用户执行at !!!白名单为空则只允许root用户执行!
/var/spool/cron/username : 任务保存文件
crond.service :系统控制crontab的服务
----------------------------------------------------实验-------------------------------------------------------
编辑定时任务的界面如下:
编辑完保存即可!!
crontab的黑白名单与at的黑白名单类似,对root用户和系统级的定时无效!
----------------------------------------------------------------实验-------------------------------------------------------------
黑名单默认存在,白名单默认不存在!
默认情况下所有用户都可以执行crontab定时任务!
将westos用户写进黑名单,发现只有黑名单的westos用户无法使用crontab!
创建白名单,将westos用户写进白名单!
当白名单建立时,黑名单会失效!因此在白名单的用户westos及root用户才可以使用crontab
ps:做完实验,一切恢复原样!!!
当日志产生时,系统会自动向执行者发送一封邮件,前提是
--------------------------------------------------------------实验----------------------------------
# dnf install postfix mailx :安装邮件软件
# systemctl enable --now postfix.service:开启postfix服务
此时写入定时任务查看实验效果!!
* * * * * /bin/date
利用mail命令却发现没有邮件!!
这是因为crond服务没有时别到postfix,因此重新开启crond服务即可!!
# systemctl restart crond.service:重新开启crond服务
这时用mail进行测试,发现已经有邮件!
或者可以利用# cat /var/log/cron 查看是否有邮件
以上邮件全部发送给root用户,这是可以设置的。
-----------------------------------------------实验-----------------------------------------
首先清空邮件,保证实验效果!
编辑 /etc/crontab文件,修改邮件收件人!
改为空,即不发送邮件!
此时进行测试,发现root用户仍然会收到邮件!
这是因为该文件系统开机已经读取过,修改不会立即生效!
设置定时任务前添加 MAILTO=' ' ,会立即生效!
修改后要重启服务!!
利用mail查看,发现已经没有邮件!
查看邮件是否执行:
# cat /var/log/cron
发现已经执行,但是没有发送邮件,说明邮件发送功能关闭成功!
以上只是屏蔽了邮件,但是任务输出仍然显示在 /var/log/cron 中,如果所有输出都不想显示怎麼办?
在编辑定时任务时,直接重定向输出,屏蔽即可!
ps:测试仍有输出,不知道为什么..........
系统及cron的设定只能root用户执行!一般用来管理临时文件!
-----------------------------------------------------------实验----------------------------------------------
建立脚本放在对应目录,即可设定定时任务!!
自己设定定时任务
# cd /etc/cron.d:在该目录下建立脚本
临时文件是有周期的,如果周期内直接用rm 清理临时文件不合适
因此可以用cron优化临时文件!
首先进入目录,里面都是临时文件
自己建立一个临时目录:westos.conf
设定该目录的周期是5s
# vim /lib/tmpfiles.d/westos.conf
此时,用# watch -n 1 ls -lR /mnt/ 进行监控发现目录还没建立,这是因为临时文件没有生效!
# systemd-tmpfiles --create /lib/tmpfiles.d/westos.conf:使临时文件生效!
此时监控发现该目录已建立!
此时在该目录下建立文件, 建立后清除
# systemd-tmpfiles --clean /lib/tmpfiles.d/westos.conf
发现file2 file3 未清除,这是因为文件从建立到清除没有5s,所有暂时不清楚!
当超过5s后,再次执行清除命令,文件都以清理!
综上,该命令清理临时文件很合适!!因此,可以将该命令与定时任务相结合,就可以优化临时文件存储!
将以上清理命令写进cron定时
# cd /etc/cron.d
# vim westos
01 * * * * root systemd-tmpfiles --clean /lib/tmpfiles.d/*.conf:每小时清理一次所有的临时文件