当前位置: 首页 > article >正文

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

1、延迟任务

概念:

在系统中我们的维护工作大多数时在服务器行对闲置时进行
我们需要用延迟任务来解决自动进行的一次性的维护
延迟任务时一次性的,不会重复执行
当延迟任务产生输出后,这些输出会以邮件的形式发送给延迟任务发起者
RHEL9 中默认系统中的所有普通用户都可以发起延时任务

at命令用法(发起延迟命令)

在系统中我们可以使用 at 命令来发起延迟任务
  • at 命令执行是调用的是 atd 服务,即使系统最小化安装 atd 也会被安装到系统中
  • at 任务信息存放在系统中/var/spool/at目录中
  • at 任务的日志文件被存放到/var/log/cron中
  • at 任务执行时如果遇到系统处于关闭状态,那么在开启时 atd 任务会检测未执行的任务并且立即执行

基本用法

前置条件:【 # systemctl status atd.service 查看延时任务有无开启】atd 是系统延时任务的守护进程,如果此程序关闭,那么系统延时任务无法使用。

at 用于安排一次性延迟任务,格式为 at [参数] [时间],输入命令后按 Ctrl+D 保存(会显示<EOT>)。

at 命令参数

at命令常用参数
-m当任务完成之后,即使没有标准输出,将给用户发送邮件(启用邮件需建立软件仓库并安装邮件系统)
-latq的别名,可列出目前系统上面的所有该用户的at调度
-datrm的别名,可以取消一个在at调度中的工作
-r删除任务(效果和 -d 类似)
-v使用较明显的时间格式,列出at调度中的任务列表
-V显示at的版本
-c可以列出后面接的该项工作的实际命令内容
-f从文件中读取任务

at 命令的时间表示方法

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

格式示例:

  at now +5 minutes       5分钟后执行

  at 14:30                       今日14:30执行

  at 2:30 tomorrow         明天2:30执行

  at teatime                    16:00(支持关键词如 teatime、midnight)

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

在生产环境中我们通常会用脚本来设定一个或多个延迟任务但是at任务的执行需要交互的进行,这样无法满足脚本自动化运行,输入重定向可以解决交互问题:

延迟任务的安全优化

  • at任务在执行时首先会查看执行者是否在名单中
  • 系统中默认只存在黑名单/etc/at.deny,写入此文件中的用户会被禁止使用at任务
  • 在系统中可以手动建立白名单/etc/at.allow,当此文件出现黑名单不会被检测
  • 白名单出现只有root用户和白名单用户可以执行at任务
  • 如果系统中没有黑白名单那么只有root用户可以执行任务
  • 黑白名单为用户列表,每个用户一行

 

 二、定时任务

定时任务介绍

  • 和延迟任务类似,我们可以用crontab来解决自动进行的周期性的维护
  • 定时任务类似手机闹钟,会重复执行
  • 当定时任务产生输出后,这些输出会以邮件的形式发送给延迟任务发起者
  • RHEL9中默认系统中的所有普通用户都可以发起定时任务

定时任务发起 

  • # systemctl status crond.service     【定时任务的守护进程】
  • 在系统中我们可以使用crontab命令来发起用户级定时任务
  • 在系统中/etc/cronfilename 是系统级定时任务,只有root用户可以发起
  • 定时任务执行是调用的是crond服务,即使系统最小化安装crond也会被安装到系统中
  • 定时任务信息存放在系统中/var/spool/cron目录中,存放文件和发起人名称一致
  • 定时任务的日志文件被存放到/var/log/cron
  • 定时任务执行时如果遇到系统处于关闭状态,那么在开启时crond任务会检测未执行的任务并且立即执行

发起用户级周期行任务 

周期任务发起方式(crontab 命令)

crontab 命令的执行格式为: crontab –u 用户 –e

crontab命令参数

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

文件时间表示格式

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

crontab 时间字段为五个星号(* * * * *),分别表示:

分钟(0-59)     小时(0-23)     日(1-31)     月(1-12)     周几(0-7, 0和7均为周日)

例:11 11 * * * echo hello # 每天 11 11 分执行 echo hello 命令
常用符号
*任意值
多个值(如 1,3,5)
-范围(如 1-5)
*/n步长(如 /3 每3单位)

*每个
* * * * *
每分钟
1,51和511,05***1:10和5:00
1-51到5*1-5****1点到5点的每分钟
*/5每隔5*/5****每隔5分钟

 crontab用户级任务管理

编辑任务

crontab -e                 编辑当前用户的任务

查看任务

crontab -l                 列出当前用户的任务

删除任务

crontab -r                删除所有任务

发起系统级别的周期任务

系统级别crontab目录详解

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

自定义周期任务设置方式

# vim /etc/cron.d/job
分钟     小时     天       月        周       用户      动作
1        09-17     *         *          *        root       date
以root身份每天9点-17点每1分执行date

 crontab用户级安全限制

通过 /etc/cron.allow 和 /etc/cron.deny 控制权限

规则优先级:

  • 若 cron.allow 存在,仅允许其中的用户使用 crontab。
  • 若 cron.allow 不存在,检查 cron.deny,拒绝其中的用户。
  • 若两者均不存在,默认行为因系统而异(通常允许所有用户)。

配置示例:

  echo "admin" >> /etc/cron.allow   仅admin可使用cron

  echo "guest" >> /etc/cron.deny    禁止guest使用cron

定时任务执行优化

定时任务在执行时首先会查看执行者是否在名单中
系统中默认只存在黑名单/etc/cron.deny,写入此文件中的用户会被禁止使用定时任务
在系统中可以手动建立白名单 /etc/cron.allow, 当此文件出现黑名单不会被检测
白名单出现只有 root 用户和白名单用户可以执行定时任务
如果系统中没有黑白名单那么只有 root 用户可以执行任务
黑白名单为用户列表,每个用户一行
黑白名单只针对用户级定时任务进行限制

相关文章:

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

1、延迟任务 概念&#xff1a; 在系统中我们的维护工作大多数时在服务器行对闲置时进行 我们需要用延迟任务来解决自动进行的一次性的维护 延迟任务时一次性的&#xff0c;不会重复执行 当延迟任务产生输出后&#xff0c;这些输出会以邮件的形式发送给延迟任务发起者 在 RH…...

Spark 之 YarnCoarseGrainedExecutorBackend

YarnCoarseGrainedExecutorBackend executor ID , 在日志里也有体现。 25/05/06 12:41:58 INFO YarnCoarseGrainedExecutorBackend: Successfully registered with driver 25/05...

【网络原理】数据链路层

目录 一. 以太网 二. 以太网数据帧 三. MAC地址 四. MTU 五. ARP协议 六. DNS 一. 以太网 以太网是一种基于有线或无线介质的计算机网络技术&#xff0c;定义了物理层和数据链路层的协议&#xff0c;用于在局域网中传输数据帧。 二. 以太网数据帧 1&#xff09;目标地址 …...

相或为K(位运算)蓝桥杯(JAVA)

这个题是相或为k&#xff0c;考察相或的性质&#xff0c;用俩个数举例子&#xff0c;011001和011101后面的数不管和哪个数相或都不可能变成前面的数&#xff0c;所以利用这个性质我们可以用相与运算来把和k对应位置的1都积累起来&#xff0c;看最后能不能拼起来k如果能拼起来k那…...

AI汽车时代的全面赋能者:德赛西威全栈能力再升级

AI汽车未来智慧出行场景正在描绘出巨大的商业图景&#xff0c;德赛西威已经抢先入局。 在2025年上海车展开幕前夕&#xff0c;德赛西威发布2030年全新使命愿景——“创领安全、愉悦和绿色的出行生活”&#xff0c;并推出全栈式智慧出行解决方案Smart Solution3.0、车路云一体式…...

Python函数:从基础到进阶的完整指南

在Python编程中,函数是构建高效、可维护代码的核心工具。无论是开发Web应用、数据分析还是人工智能模型,函数都能将复杂逻辑模块化,提升代码复用率与团队协作效率。本文将从函数基础语法出发,深入探讨参数传递机制、高阶特性及最佳实践,助你掌握这一编程基石。 一、函数基…...

学习Python的第四天之网络爬虫

30岁程序员学习Python的第四天之网络爬虫的Scrapy库 Scrapy库的基本信息 Scrapy库的安装 在windows系统中通过管理员权限打开cmd。运行pip install scrapy即可安装。 通过命令scrapy -h可查看scrapy库是否安装成功. Scrapy库的基础信息 scrapy库是一种爬虫框架库 爬虫框…...

5、开放式PLC梯形图编程组件 - /自动化与控制组件/open-plc-programming

76个工业组件库示例汇总 开放式PLC编程环境 这是一个开放式PLC编程环境的自定义组件&#xff0c;提供了一个面向智能仓储堆垛机控制的开放式PLC编程环境。该组件采用苹果科技风格设计&#xff0c;支持多厂商PLC硬件&#xff0c;具有直观的界面和丰富的功能。 功能特点 多语…...

数据指标和数据标签

数据指标和数据标签是数据管理与分析中的两个重要概念&#xff0c;它们在用途、形式和应用场景上有显著区别。以下是两者的详细对比&#xff1a; 1. 核心定义 维度数据指标&#xff08;Data Metrics&#xff09;数据标签&#xff08;Data Tags/Labels&#xff09;定义量化衡量…...

linux中常用的命令(三)

目录 1- ls(查看当前目录下的内容) 2- pwd (查看当前所在的文件夹) 3- cd [目录名]&#xff08;切换文件夹&#xff09; 4- touch [文件名] &#xff08;如果文件不存在&#xff0c;新建文件&#xff09; 5- mkdir[目录名] &#xff08;创建目录&#xff09; 6-rm[文件名]&…...

Java 中 AQS 的实现原理

AQS 简介 AQS(全称AbstractQueuedSynchronizer)即抽象同步队列&#xff0c;它是实现同步器的基础组件&#xff0c;并发包中锁的底层就是使用AQS实现的。 由类图可以看到&#xff0c;AQS是一个FIFO的双向队列&#xff0c;其内部通过节点head和tail记录队首和队尾元素&#xff0…...

『Python学习笔记』ubuntu解决matplotlit中文乱码的问题!

ubuntu解决matplotlit中文乱码的问题&#xff01; 文章目录 simhei.ttf字体下载链接&#xff1a;http://xiazaiziti.com/210356.html将字体放到合适的地方 sudo cp SimHei.ttf /usr/share/fonts/(base) zkfzkf:~$ fc-list | grep -i "SimHei" /usr/local/share/font…...

docker compose ps 命令

docker compose ps 命令用于列出与 Docker Compose 项目相关的容器及其状态。 docker compose ps 能显示当前项目中所有服务容器的运行状态、端口映射等信息。 语法 docker compose ps [OPTIONS] [SERVICE…] SERVICE&#xff08;可选&#xff09;&#xff1a;指定要查看状态…...

redis数据结构-04 (HINCRBY、HDEL、HKEYS、HVALS)

哈希操作&#xff1a;HINCRBY、HDEL、HKEYS、HVALS Redis 中的哈希功能极其丰富&#xff0c;让您能够以类似于编程语言中对象的方式存储和检索数据。本课将深入探讨具体的哈希操作&#xff0c;这些操作为操作以下结构中的数据提供了强大的工具&#xff1a; HINCRBY 、 HDEL 、…...

鸿蒙知识总结

判断题 1、 在http模块中&#xff0c;多个请求可以使用同一个httpRequest对象&#xff0c;httpRequest对象可以复用。&#xff08;错误&#xff09; 2、订阅dataReceiverProgress响应事件是用来接收HTTP流式响应数据。&#xff08;错误&#xff09; 3、ArkTS中变量声明时不需要…...

Ubuntu 22虚拟机【网络故障】快速解决指南

Ubuntu22虚拟机突然无法连接网络了&#xff0c;以下是故障排除步骤记录。 Ubuntu 22虚拟机网络故障快速解决指南 当在虚拟机中安装的 Ubuntu 22 系统出现 ping: connect: 网络不可达 和 ping: www.baidu.com: 域名解析出现暂时性错误的报错时&#xff0c;通常意味着虚拟机无法…...

C++23 新特性:深入解析 std::views::join_with(P2441R2)

文章目录 std::views::join_with 基本用法处理字符串集合std::views::join_with 与其他视图的结合使用总结 随着C23标准的逐步推进&#xff0c;我们迎来了许多令人兴奋的新特性&#xff0c;其中之一就是 std::views::join_with。这个新特性是C23中引入的视图适配器&#xff0c…...

购物车构件示例

通用购物车构件设计 注:代码仅用于演示原理,不可用于生产环境。 一、设计目标 设计一个高度可复用的购物车构件,具备以下特点: 与具体业务系统解耦支持多种应用场景(商城、积分系统等)提供标准化接口易于集成和扩展二、核心架构设计 1. 分层架构 ┌─────────…...

数据可视化大屏——智慧社区内网比对平台

综述分析&#xff1a; 智慧社区内网数据比对信息系统 这段代码实现了一个智慧社区内网数据比对信息系统的前端界面&#xff0c;采用三栏式布局展示各类社区安全相关数据。界面主要由左侧数据统计、中间地图展示和右侧数据分析三部分组成&#xff0c;使用了多种图表可视化技术…...

详解SLAM中的李群和李代数(中)

1 概述 在上一篇文章《详解SLAM中的李群和李代数&#xff08;上&#xff09;》中&#xff0c;我们已经通过对李群求导引出了李代数。在这篇文章中&#xff0c;我们就系统总结一下李代数的相关知识。 2 李代数 2.1 定义 李代数是一个向量空间 g \mathfrak{g} g与一个二元运算…...

Jenkins企业级实战

目标 在Windows操作系统上使用Jenkins完成代码的自动拉取、编译、打包、发布工作。 实施 1.安装Java开发工具包&#xff08;JDK&#xff09; Jenkins是基于Java的应用程序&#xff0c;因此需要先安装JDK。可以从Oracle官网或OpenJDK下载适合的JDK版本。推荐java17版本&#x…...

uniapp-商城-52-后台 商家信息(商家信息数据,云对象使用)

1、概述 已经通过好几个篇幅来说明商家信息&#xff0c;包括logo、商家名称&#xff0c;地址&#xff0c;电话以及商家简介。通过表单组件和标签&#xff0c;以及我们的文件上传标签&#xff0c;都做了说明。&#xff08;logo上传&#xff0c;用的文件上传组件是上传到公共的数…...

MySQL 索引设计宝典:原理、原则与实战案例深度解析

目录 前言第一章&#xff1a;索引设计的基础原则 (知其然&#xff0c;更要知其所以然)第二章&#xff1a;实战案例&#xff1a;电商订单系统的索引设计第三章&#xff1a;索引设计的实践流程总结结语 &#x1f31f;我的其他文章也讲解的比较有趣&#x1f601;&#xff0c;如果喜…...

C#上传文件到腾讯云的COS

测试环境&#xff1a; vs2022 .net 6控制台应用程序 测试步骤如下&#xff1a; 1 添加子用户&#xff0c;目前是为了拿到secretId和secretKey&#xff0c;打开添加子用户界面链接&#xff1a;https://console.cloud.tencent.com/cam 并为子用户添加API 密钥 2 通过链接htt…...

java的Stream流处理

Java Stream 流处理详解 Stream 是 Java 8 引入的一个强大的数据处理抽象&#xff0c;它允许你以声明式方式处理数据集合&#xff08;类似于 SQL 语句&#xff09;&#xff0c;支持并行操作&#xff0c;提高了代码的可读性和处理效率。 一、Stream 的核心概念 1. 什么是 Str…...

C PRIMER PLUS——第9节:动态内存分配、存储类别、链接和内存管理

目录 1.动态内存分配 1.1 malloc 函数 1.2 calloc 函数 1.3 realloc 函数 1.4 free 函数 1.5常见错误 1.6综合例题 2.C语言的内存结构 3.存储类别 3.1作用域&#xff08;Scope&#xff09; 3.2链接&#xff08;Linkage&#xff09; 3.3存储期&#xff08;Storage Du…...

作业...

基础配置 RI R2 R3 R4 R5 例如R1 BGP配置 1,R1和R2之间使用直连接口IP地址来建立EBGP对等体关系 2、R2、R3、R4之间配置OSPF协议&#xff0c;保证各设备之间的网络互通&#xff0c;且通过重发布的方式发布路由 查看R2、R3、R4的OSPF路由表&#xff1a; \ R2、R3、R4使用环…...

IC ATE集成电路测试学习——电流测试的原理和方法

电流测试 我们可以通过电流来判断芯片的工作状态时&#xff0c;首先先了解下芯片的电流是如何产生的。 静态电流 理论上&#xff0c;CMOS结构的芯片静态时几乎不耗电 CMOS基本结构&#xff1a;Pmos Nmos 串联当逻辑电平稳定时&#xff1a; ➜ 要么Pmos导通&#xff0c;Nmo…...

redis数据结构-03 (HMSET、HGET、HGETALL)

Redis 哈希介绍&#xff1a;HMSET、HGET、HGETALL Redis 哈希是一种强大的数据结构&#xff0c;允许您在单个键内存储字段值对的集合。它们对于表示对象、配置或任何可以自然分组到字段中的数据非常有用。本课将向您介绍使用 Redis 哈希的基本命令&#xff1a; HMSET 、 HGET …...

2025年01月09日德美医疗前端面试

目录 vue2 的双向绑定的原理vue3 的双向绑定原理vue 的生命周期vue 子组件为何不能修改父组件的值js delete 删除数组的某一个值会怎么样vue 和 react 的 diff 算法什么是闭包原型链this指向 vue2 的双向绑定的原理 以下是 Vue 2 双向绑定的原理&#xff1a; 1. 核心概念 …...