Linux云计算学习笔记11 (计划任务)

一.基本概念

在Linux操作系统中,除了用户即时执行的命令操作以外,还可以配置在指定的时间、指定的日期执行预先计划好的系统管理任务(如定期备份、定期采集监测数据)。试想一下,如果系统要求在业务不那么繁忙的半夜进行调整,难道我们需要半夜爬起来去搞定吗?这个时候,能够提前制定计划,让系统自动解决问题的计划任务就派上用场了。RHEL6系统中默认已安装了at、crontab软件包,通过atd和crond这两个系统服务实现一次性、周期性计划任务的功能,并分别通过at、crontab命令进行计划任务设置。

二.一次性计划任务(at)

at是单次的计划任务,顾名思义,由at规划的任务只执行一次就会结束。

命令格式:

复制代码
at [选项] [时间格式] [任务命令]
[选项]可加可不加,具体根据如下需求确定

at的参数选项:

复制代码
-b 设置批处理命令的别名 
-c 显示指定任务的内容 
-d 删除系统中的等待任务 
-f 将指定文件提交等待任务 
-l 显示系统中的全部任务 
-m 任务完成后给用户发邮件 
-M 从不向用户发邮件 
-q 使用指定的队列 
-r 删除指定的任务作业 
-t 以时间的形式提交运行任务 
-v 显示任务将被执行的时间 
-V 显示版本信息

时间格式可以精确到分钟,具体用法如下:

复制代码
<时>:<分>
<年>-<月>-<日>
混合使用:
<时>:<分> <年>-<月>-<日>
当前时间:now

例如:某年某月某日 某时某分,需要删除某个文件
at 12:25 2023-02-10 
at >rm -rf /filename
at ><EOT>

(<EOF>是写完命令退出at,可以用快捷键ctrl+D代替)

还可以使用相对时间进行设置:

复制代码
<绝对时间> +<偏移量> <偏移单位>
#偏移单位有:minutes, hours, days, weeks

举例:两分钟后备份某个文件
at now + 2 minutes
at > cp /filename /dirname/filename.back
at ><EOT>

常用参数:

复制代码
查看计划任务:at -l
删除计划任务:at -d

二.周期性计划任务(crontab)

crontab功能是管理定时计划任务。定时计划任务,顾名思义就是计划好的任务,到了时间就会自动执行。用户只要能够按照正确的格式(分、时、日、月、星期、命令)写入配置文件,那么就会按照预定的周期时间自动执行,而crontab命令则是用于配置定时计划任务的工具名称。

命令参数:

复制代码
-e 编辑任务   
-r 删除任务 
-i 删除前询问用户是否确认 
-u 设置用户名 
-l 显示任务 
--help 显示帮助信息

部分用户可能找不到命令,需要进行安装:

复制代码
安装:yum -y install crontabs
开启服务:systemctl start crond.service
查看状态:systemctl status crond.service
开机自启:chkconfig crond on

语法格式:

复制代码
语法格式 :
Minutes   Hours    Day-of-Month    Month    Day-of-Week          Command 
 分钟	  小时	        日			 月		    周		         执行的命令
 0-59	  0-23  	   1-31         1-12	    0-7

时间:可以用*表示
*:每,在哪个位置表示哪个时间,例如在Month就表示每个月,在Hours就表示每小时

*/5 :表示间隔时间,例如在month上的*/2表示每间隔两个月,在hours上的*/5表示每间隔五个小时

,:不同的时间段

- : 表示范围

详细举例如图:

复制代码
00 00 * * * /home/soso.sh			#每天凌晨

00 02 * * * ls			            #每天2:00整 

00 02 1 * * ls  			        #每月1号2:00整 

00 02 14 2 * ls	                    #每年2月14号2:00整

00 02 * * 7 ls  			        #每周日2:00整 

00 02 * 6 5 ls  			        #每年6月的周五2:00整

00 02 * * * ls			            #每天2:00整 

*/5 * * * * ls				        #每隔5分钟 

00 02 1,5,8 * * ls		                #每月1,5,8号的2:00整 

00 02 1-8 * * ls                    #每月1到8号的2:00整

其他用户创建任务:

复制代码
[root@linux-server ~]# crontab -u jack -e  #使用jack用户创建
[root@linux-server ~]# crontab -u jack -l  #查看jack用户的计划任务
[root@linux-server ~]# crontab -r  #删除当前用户的计划任务
[root@linux-server ~]# crontab -u jack -r #删除jack用户的计划任务

关于计划任务的配置文件与权限问题:

复制代码
使用者权限文件:
文件:
/etc/cron.deny
说明:
该文件中所列用户不允许使用crontab命令

文件:
/etc/cron.allow
# 当这个文件产生时,/etc/cron.deny文件失去作用,只有这个文件中的用户才能使用crontab
说明:
该文件中所列用户允许使用crontab命令

系统本身的计划任务
 /etc/crontab
相关推荐
Fruiticecake2 分钟前
epoll 回显服务器是怎么工作的:从 accept 队列到就绪链表,以及它和 select / poll 的区别
linux
La Pulga4 分钟前
【FreeRTOS源码学习笔记】链表的实现
数据结构·笔记·stm32·mcu·链表·嵌入式·freertos
莫晓燚18 分钟前
阿里云若依项目部署与日志采集---实战
运维·数据库·redis·阿里云·ruoyi
captain37620 分钟前
MyBatis Plus(1)
java·服务器·mybatis
何中应23 分钟前
Grafana如何共享面板
运维·grafana·可观测
科创致远27 分钟前
ESOP 电子作业指导书 WiFi 网络应用实测报告
运维·服务器·网络
承渊政道35 分钟前
Linux网络学习【从NAT与代理服务理解网络转发、探索内网穿透原理、再到认识DNS与ICMP、最后动手部署并测试内网穿透】
linux·网络·学习·内网穿透·dns·nat
重生之小比特1 小时前
【Linux系统】17 库制作与原理(下)
linux·运维·服务器
weixin_450907281 小时前
[ZYNQ Linux] VCU使用
linux·zynq
acd120091 小时前
Nginx 反向代理的缓冲区坑:后端响应大时接口偶发 502
java·运维·nginx