1.系统延时任务
at 11:46/now+1min ##设定任务执行时间/延时1分钟
at> touch westos{1..3} ##任务动作
at> <EOT> << CTRL +D ##用ctrl+D发起任务
at -l ##查看任务列表
at -c 任务号 ##查看任务内容
at -r 任务号 ##取消任务执行
2.at任务的黑白名单
at任务的黑名单/etc/at.deny ## 系统中默认存在,在此文件中出现的用户不能执行at命令
at任务的白名单/etc/at.allow ## 系统中默认不存在,当该文件出现,普通用户不能执行at命令
##只有在名单中的用户和超级用户可以执行at命令,并且/etc/at.deny失效
要想添加黑白名单 vim /etc/at.deny | /etc/at.allow
###############3.系统定时任务####################
系统中控制定时任务crontab的服务为crond.service,当这一服务开启时定时任务生效。
定时任务保存文件/var/spool/cron/username中。
分钟 小时 日期 月份 周数
* * * * * ##每分钟
*/2 * * * * ##每两分钟
*/2 09-17 * * * ##早7-晚5点内每两分钟
*/2 */2 * * * ##每隔2小时每两分钟
*/2 09-17 3,5 1 5 ##1月份3号和5号,每周周五,早9-晚5点,每两分钟
*/2 09-17 * * 5 ##每周周五早9-晚5点每两分钟
crontab 命令
crontab -e -u ##建立指定用户的定时任务(普通用户不能指定用户,只有超级用户可以指定用户)
crontab -l -u ##列出指定用户的定时任务列表
crontab -r -u ##取消指定用户的定时任务执行
实验crontab 命令:
通过watch -n 1 ls -lR /mnt进行监控,看看设置是否成立
rm -fr /mnt/* ##清空目录方便监控
systemctl status crond.service ##查看服务crond.service是否为开启状态
[root@westosb ~]# crontab -u root -e ####建立root用户的定时任务
no crontab for root - using an empty one
crontab: installing new crontab
[root@westosb ~]# crontab -l ##查看任务列表
*/2 * * * * touch ff{1..6}
[root@westosb ~]# crontab -l -u root
*/2 * * * * touch ff{1..6}
[root@westosb ~]# crontab -r -u root ##删除任务
[root@westosb ~]# crontab -l -u root
no crontab for root
监控信息:
crontab的黑名单/etc/cron.deny ##系统中默认存在,在此文件中出现的用户不能执行crontab
crontab的白名单/etc/cron.allow ##系统中默认不存在,当文件出现,普通用户不能执行crontab,只有在名单中的用户可以执行crontab,并且黑名单/etc/cron.deny失效
注意: 这两个名单都不会影响/etc/cron.d/目录中定时任务的发起及执行
3种方法避免接收邮件,浪费系统存储空间
注意: 当延时任务有输出时,输出会以邮件的形式发送给at任务的发起者,为了看到发送的邮件,我们需要用到提供邮件发送服务的postfix和提供邮件查看服务mailx,配置虚拟机westosa的软件源指向文件(这里使用真实主机中的软件仓库),安装postfix和mailx,启动postfix服务
dnf install postfix mailx -y ##安装postfix和mailx
systemctl enable --now postfix.service ##启动postfix服务
方法1:
vim /var/spool/cron/root ##屏蔽定时任务的输出
//
* * * * * /bin/date &> /dev/null
//
169 systemctl restart crond.service
170 > /var/spool/mail/root
171 mail
方法2:关闭邮件发送功能
crontab的发起者不会接收到有输出的定时任务发送的邮件
vim /etc/sysconfig/crond
//
CRONDARGS=-s -m off
//
systemctl restart crond.service
mail
方法3:
vim /etc/crontab
//
MAILTO="" ##设置接收用户为空,无人接受
//
crontab -e -u root
//
MAILTO="" ##添加此行到定时任务中
* * * * * /bin/date
//
systemctl restart crond.service