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
相关推荐
小毛驴85031 分钟前
Linux 后台启动java jar 程序 nohup java -jar
java·linux·jar
DKPT1 小时前
Java桥接模式实现方式与测试方法
java·笔记·学习·设计模式·桥接模式
鸭鸭鸭进京赶烤1 小时前
大学专业科普 | 云计算、大数据
大数据·云计算
一心0922 小时前
ubuntu 20.04.6 sudo 源码包在线升级到1.9.17p1
运维·ubuntu·sudo·漏洞升级
好好学习啊天天向上2 小时前
世上最全:ubuntu 上及天河超算上源码编译llvm遇到的坑,cmake,ninja完整过程
linux·运维·ubuntu·自动性能优化
你想考研啊2 小时前
三、jenkins使用tomcat部署项目
运维·tomcat·jenkins
tan180°3 小时前
MySQL表的操作(3)
linux·数据库·c++·vscode·后端·mysql
代码老y3 小时前
Docker:容器化技术的基石与实践指南
运维·docker·容器
巴伦是只猫3 小时前
【机器学习笔记Ⅰ】13 正则化代价函数
人工智能·笔记·机器学习
典学长编程3 小时前
Linux操作系统从入门到精通!第二天(命令行)
linux·运维·chrome