系统延迟任务及定时任务

一、系统的延迟任务

1.延迟任务的发起

打开一个shell,watch -n1 ls -lR /mnt,观察实验效果,可提前给目录下建立一些文件

1、at 21:14
2、rm -fr /mnt/* 	#执行任务的内容
3、[ctrl]+[d] 		#发起任务
4、  
  at -l 		#查看任务队列,任务执行后在该队列中消失
  at -c 任务号 		#查看任务内容
  at -r 任务号 		#取消任务

在这里插入图片描述

2.延迟任务的输出

一条命令如果是延迟执行的话,即使有输出,这些输出也不会出现在桌面上,输出会以邮件形式发送到任务发起者邮箱中

实验过程:

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 		#退出

图一在这里插入图片描述

图二
在这里插入图片描述

3.at命令的用户控制

在系统中,我们可以设定哪个用户可以执行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服务

1、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是否有漏执行的情况,若检测到有漏执行的任务时,会立即将该任务执行

在这里插入图片描述

2、crontab的用户控制

crontab和at命令有很多相似的地方,当crontab命令有输出时,也会以邮件方式发送到命令发起人的邮箱

1、vim /etc/cron.deny 		#cron用户名单,用法同at.deny
2、vim /etc/cron.allow 		#cron白名单,用法同at.allow

示例:过程和at命令相同
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

结束!!!

猜你喜欢

转载自blog.csdn.net/weixin_46138661/article/details/104705601