Linux——1_系统的延迟任务及定时任务

系统的延迟任务及定时任务

在系统中我们的维护工作大多数时在服务器行对闲置时进行

我们需要用延迟任务来解决自动进行的一次性的维护

延迟任务时一次性的,不会重复执行

当延迟任务产生输出后,这些输出会以邮件的形式发送给延迟任务发起者

在RHEL9中默认系统中的所有普通用户都可以发起延时任务

延迟任务

发起方法:

at命令

参数

复制代码
at 命令执行格式为 at[参数][时间]
at 命令常用参数
-m 当任务完成之后,即使没有标准输出,将给用户发送邮件
-l atq的别名,可列出目前系统上面的所有该用户的at调度
-d atrm的别名,可以取消一个在at调度中的工作
-v 使用较明显的时间格式,列出at调度中的任务列表
-c 可以列出后面接的该项工作的实际命令内容
-f 从文件中读取作作业

时间表示方法

复制代码
HH:MM 在今天的HH小时MM分钟执行,如果今天的这个时间点已经过了,则明天执行
HH:MM YYYY-MM-DD 强制规定在某年某月的某一天的特殊时刻进行该工作
now +2 minutes 从现在开始几分钟minutes, hours, days, or weeks

如何非交互的设定延迟任务

延时任务的安全优化

at任务在执行时首先会查看执行者是否在名单中

系统中默认只存在黑名单/etc/at.deny,写入此文件中的用户会被禁止使用at任务

在系统中可以手动建立白名单/etc/at.allow,当此文件出现黑名单不会被检测

白名单出现只有root用户和白名单用户可以执行at任务

如果系统中没有黑白名单那么只有root用户可以执行任务

黑白名单为用户列表,每个用户一行

定时任务

介绍

和延迟任务类似,可以用crontab来解决自动进行的周期性的维护

定时任务类似手机闹钟,会重复执行

当定时任务产生输出后,这些输出会以邮件的形式发送给延迟任务发起者

在RHEL9中默认系统中的所有普通用户都可以发起定时任务

发起

在系统中我们可以使用crontab命令来发起用户级定时任务

在系统中/etc/cronfilename 是系统级定时任务,只有root用户可以发起

定时任务执行是调用的是crond服务,即使系统最小化安装crond也会被安装到系统中

定时任务信息存放在系统中/var/spool/cron目录中,存放文件和发起人名称一致

定时任务的日志文件被存放到/var/log/cron中

定时任务执行时如果遇到系统处于关闭状态,那么在开启时crond任务会检测未执行的任务并且立即执行

复制代码
crontab -u 用户 -e

#参数
-u:用来设定某个用户的crontab服务此参数一般有root用户来运行。
file:file是命令文件的名字,表示将file做为crontab的任务列表文件并载入crontab
-e:编辑某个用户的crontab文件内容。如果不指定用户,则表示编辑当前用户的crontab文件。
-l:显示某个用户的crontab文件内容,如果不指定用户,则表示显示当前用户的crontab文件内容。
-r:从/var/spool/cron目录中删除某个用户的crontab文件
-i:在删除用户的crontab文件时给确认提示。
crontab 在设定定时任务是会以vi命令打开临时文件在保存时会把内容同步到/var/spool/cron中

文件格式:分 时 天 月 周 执行动作

11 11 * * * echo hello #每天11点11分执行echo hello命令

时间表示

|------|-----|--------------------|-----------|
| * | 每个 | * * * * * | 每分钟 |
| 1,5 | 1和5 | 1 1,5 * * * * | 1:10和5:01 |
| 1-5 | 1到5 | * 1-5 * * * * | 1点到5点的每分钟 |
| */5 | 每隔5 | */5 * * * * | 每隔5分钟 |

发起系统级别周期任务

系统级别crontab目录详解

|-------------------|-----------|
| /etc/cron.d | 系统自定义周期任务 |
| /etc/cron.daily | 每天周期任务 |
| /etc/cron.hourly | 每小时周期任务 |
| /etc/cron.monthly | 每月周期任务 |
| /etc/cron.weekly | 每周周期任务 |

设置方式

复制代码
vim /etc/cron.d/job
分钟 小时 天 月 周 用户 动作
01 09-17 *** root date

定时任务优化

定时任务在执行时首先会查看执行者是否在名单中系统中

默认只存在黑名单/etc/cron.deny,写入此文件中的用户会被禁止使用定时任务

在系统中可以手动建立白名单/etc/cron.allow,当此文件出现黑名单不会被检测

白名单出现只有root用户和白名单用户可以执行定时任务

如果系统中没有黑白名单那么只有root用户可以执行任务

黑白名单为用户列表,每个用户一行

黑白名单只针对用户级定时任务进行限制

相关推荐
A小辣椒12 小时前
TShark:Wireshark CLI 功能
linux
A小辣椒16 小时前
TShark:基础知识
linux
AlfredZhao18 小时前
OCI 明明分配了 200G 系统盘,为什么 df 只看到 30G?
linux·oci
AlfredZhao1 天前
vi 删除指定范围的行,不用再反复按 dd
linux·vi
用户9718356334662 天前
银河麒麟 KY10 申威(SW64) 安装 nginx-1.16.1-2.p01.ky10.sw_64.rpm 详细步骤
linux
猪脚踏浪2 天前
linux 拷贝文件或目录到指定的位置
linux
大树882 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠2 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质2 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
bush42 天前
嵌入式linux学习记录十四、术语
linux·嵌入式