打开一个shell,watch -n1 ls -lR /mnt,观察实验效果,可提前给目录下建立一些文件
1、at 21:14
2、rm -fr /mnt/* #执行任务的内容
3、[ctrl]+[d] #发起任务
4、
at -l #查看任务队列,任务执行后在该队列中消失
at -c 任务号 #查看任务内容
at -r 任务号 #取消任务
一条命令如果是延迟执行的话,即使有输出,这些输出也不会出现在桌面上,输出会以邮件形式发送到任务发起者邮箱中
实验过程:
1、dnf install mailx postfix #安装邮件服务
systemctl start postfix #打开邮件服务
systemctl enable postifx #开机自启
2、
mail #查看邮件
mail -u root #查看root用户的邮件
3、> /var/spool/mail/root #清空root用户的邮件
4、发起任务(图二)
at 21:45
timedatectl #此命令有输出但不会显示到字符设备中,输出会用邮件发送给at发起人
mail -u root #查看root用户的邮件,可看到一条at命令的输出邮件
& 1 #输入邮件编号查看
&q #退出
在系统中,我们可以设定哪个用户可以执行at命令,哪个用户不能执行,默认系统中的所有用户都可以执行at命令
1、/etc/at.deny #at控制黑名单,此名单中的人不能执行at
2、/etc/at.allow #at白名单,此文件默认不存在
注意:当此文件存在时/etc/at.deny文件不生效
当此文件存在系统普通用户默认不能执行at,只有在名单中的人可以执行at命令
1、lee在黑名单,lee用户不能使用at命令,westos用户可以使用(可用man 5 at.deny查看该名单的用法)
2、lee在白名单,lee可以使用at命令,westos用户不能使用
延迟任务是一次性的,执行以后就不会再执行了,但系统中有很多任务是需要周期性执行的,那我们怎么设定才能让他周期性的执行,我们就需要用到crond服务
crond #定时任务服务
crond的设定方式
1、命令设定方式: #用户级别定时任务
crontab -u root -e #设定,-u:指定用户,-e:编辑
crontab -u root -l #查看任务
crontab -u root -r #删除任务
/var/spool/cron/root #任务存储位置
2、配置文件设定方式: #是系统级别的crond,只有超级用户可操作
/etc/cron.d #系统级别cron设定文件存放路径
vim /etc/cron.d/westos #cron设定文件
写法:
时间 用户 动作
* * * * * root rm -fr /mnt/*
1、命令设定方式:crontab -u root -e以后进入crontab的编写界面,具体编写方式如下(可用man 5 crontab查看)
时间 (顺序不能换) 任务
分钟 小时 天 月 周 系统命令|脚本
09-17 * * * * #每天每小时09分-17分执行该任务(任务没写)
09-17 * * * 3,5 #每周3和周五每小时的09分-17分
09-17/2 * * * 3,5 #每周三和周五每小时09分-17分时间段每隔2分钟
09-17/2 10 * * 3,5 #每周三和周五10点的09分-17分时间段每4隔2分钟
09-17/2 10 5 * 3,5 #每周三和周五及每月5号10点09分-17分时间段每隔2分钟
09-17/2 10 5 3 3,5 #3月每周三和周五以及3月5号10点09分-17分时间段每隔2分钟(天和星期是分开)
2、配置文件方式设定: 在目录/etc/cron.d中编写文件,编写的文件如果在该目录中,则该文件就生效了
系统级别的crontab有几个目录:
/etc/cron.daily/ #每天任务
/etc/cron.hourly/ #每小时任务
/etc/cron.monthly/ #每月任务
/etc/cron.weekly/ #每周执行动作
例如:在/etc/cron.hourly/中编写任务,则该任务每小时执行一次,在/etc/cron.hourly/目录中可以看到还有一个0anacron脚本,该脚本是用来检测我们设定的crontab是否有漏执行的情况,若检测到有漏执行的任务时,会立即将该任务执行
crontab和at命令有很多相似的地方,当crontab命令有输出时,也会以邮件方式发送到命令发起人的邮箱
1、vim /etc/cron.deny #cron用户名单,用法同at.deny
2、vim /etc/cron.allow #cron白名单,用法同at.allow
结束!!!