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
相关推荐
我爱挣钱我也要早睡!10 分钟前
Java 复习笔记
java·开发语言·笔记
江团1io02 小时前
深入解析TCP核心机制:连接管理、流量与拥塞控制
服务器·网络·tcp/ip
磊灬泽2 小时前
【日常错误】鼠标无反应
linux·windows
知白守黑2672 小时前
Ansible角色
运维·服务器·ansible
Jwest20212 小时前
工业显示器在地铁电力监控与运维中的应用
运维·计算机外设
知识分享小能手3 小时前
React学习教程,从入门到精通, React 属性(Props)语法知识点与案例详解(14)
前端·javascript·vue.js·学习·react.js·vue·react
汇能感知5 小时前
摄像头模块在运动相机中的特殊应用
经验分享·笔记·科技
阿巴Jun5 小时前
【数学】线性代数知识点总结
笔记·线性代数·矩阵
茯苓gao5 小时前
STM32G4 速度环开环,电流环闭环 IF模式建模
笔记·stm32·单片机·嵌入式硬件·学习
是誰萆微了承諾6 小时前
【golang学习笔记 gin 】1.2 redis 的使用
笔记·学习·golang