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
相关推荐
身如柳絮随风扬无论云泥意贯一13 分钟前
计算机网络 实验七 NAT配置实验
服务器·网络·计算机网络·智能路由器
ps酷教程14 分钟前
webrtc视频会议学习(三)
学习·webrtc
深思慎考22 分钟前
计算机操作系统——进程控制(Linux)
linux·服务器·c++·c
楚疏笃30 分钟前
鸿蒙学习自由流转与分布式运行环境-跨端迁移(2)
分布式·学习·harmonyos
澜世44 分钟前
2024小迪安全基础入门第七课
网络·笔记·安全·网络安全
阿熊不会编程1 小时前
【计网】自定义协议与序列化(一) —— Socket封装于服务器端改写
linux·开发语言·网络·c++·设计模式
北冥有鱼被烹1 小时前
微知-如何通过lspci指定某个deviceid查看pcie设备?(lspci -d 15b3:和lspci -d :1021 )
linux·pcie
weixin_478689761 小时前
【二叉树】【2.1遍历二叉树】【刷题笔记】【灵神题单】
笔记
菜鸟小灰灰1 小时前
搭建私有docker仓库
运维·docker·容器
Yanbin_Q1 小时前
调用 AWS Lambda 时如何传送字节数组
云计算·aws