【Linux笔记】系统的延迟任务、定时任务极其相关命令(at、crontab极其黑白名单等)

一、延时任务

1、概念

延时任务(Delayed Jobs)通常指在指定时间或特定条件满足后执行的任务。常见的实现方式包括 at 和 batch 命令,以及结合 cron 的调度功能。

2、命令

延时任务的命令最常用的是at命令,第二大节会详细介绍。其中,atd是延时任务的开启条件,

systemctl enable --now atd  
—— 启动atd服务并设置开机自启systemctl status atd.service
—— 检查atd服务状态

示例

显示active和enable字样代表atd已开启; atd 是系统延时任务的守护进程,如果此程序关闭,那么系统延时任务无法使用

二、at命令(延时任务)

1、概念

at 是 Linux 系统中用于调度一次性任务的命令行工具,允许用户在指定时间运行命令或脚本。它非常适合临时任务(如定时重启服务、发送提醒、执行备份等),且与 cron(周期性任务)互补。

2、命令

(1)安装at命令

多数 Linux 发行版默认未安装 at,需手动安装,安装需要配置软件仓库(往期博客有教),各家Linux版本不一样,会导致安装at命令也不一样,以下以rhel红帽Linux为例(dnf安装):

dnf install at -y

示例(以rhel红帽Linux为例)

(2) 常用命令

1)at [时间];同时包含at命令的基本讲解
at [时间]

示例

 

 此命令代表在19:20时执行命令(延时命令),输入完按enter后,就会进入at命令界面(如图)

此时,在“at>”后输入你想要的命令,就能延时触发,如:


输入完命令后,使用ctrl+d,ctrl+d表示任务录入结束,时间到时就会执行命令

按ctrl+d后:


我们刚刚执行的at命令是:touch /mnt/file{1..5} —— 即在/mnt下创建文件file1到file5,现在我们使用ls命令去/mnt下面看命令是否已执行(注意:需要时间到了才会执行!像这里的话就要到“19:20”时,touch命令才会执行)

ls /mnt/

示例

 

可以看到文件已创建,说明at命令执行成功

2)at now + X min

at now + X min,其中X表示你想要的数字,即你想规定的分钟(如2min、5min)

at now+5(这里的5可以替换成自己想要的分钟数)min

示例

 

now表示现在;“+”表示往后增加;5min表示5分钟

这条命令代表现在开始五分钟执行命令,执行的命令还是touch命令

3)at常用参数表

at 命令常用参数表

参数说明示例
-m即使任务没有输出,也发送邮件通知用户(默认无输出时不发送)。echo "ls" | at -m now +5 minutes
-M与 -m 相反,禁止发送邮件(即使有输出)。echo "ls" | at -M now +5 minutes
-v显示任务的计划执行时间(通常用于调试)。at -v 14:30 tomorrow
-c <任务编号>查看指定任务的完整内容(包括环境变量和命令)。at -c 3
-f <文件>从指定文件中读取要执行的命令(替代交互式输入)。at -f /path/to/script.sh 10:00 AM
-l列出当前用户的所有待处理任务(等同于 atq)。at -l 或 atq
-d <任务编号>删除指定任务(等同于 atrm)。at -d 3 或 atrm 3
-q <队列>指定任务队列(队列用单个字母表示,默认从 a 到 z,优先级递增)。echo "command" | at -q b now +1 hour
-t <时间戳>使用 时间戳 格式([[CC]YY]MMDDhhmm[.ss])指定时间。at -t 202410011430.30(2024年10月1日14:30:30)
-V显示 at 的版本信息。at -V

此表为概括描述,下面会有对其中一些命令的详细介绍 

4)at -l

        at -l能查任务列表

at -l

         示例

5)at -c

-c查看具体

at -c 2(这个2是任务编号,可以通过at -l命令来查看任务编号,任务编号就是最开头的数字)

示例

查看任务编号为2的任务具体内容

6) at -r

-r删除任务

at -r 3(这里的3也是任务号,同理)

示例

 

先用-l查看有的任务(这里是任务号3),然后-r删除任务3

7)at -m(同时包含-m所需的postfix软件和s-nail软件安装教程)
  • postfix软件和s-nail软件安装教程
    dnf install postfix.x86_64 s-nail.x86_64
    —— 同时安装postfix软件和s-nail软件

    示例
    我们先安装postfix软件(发送邮件程序)和s-nail软件(查看邮件的程序)
    安装前需要配置软件仓库(具体操作可以查看往期博客)

  • 立即(--now)启用postfix程序

    systemctl enable --now postfix

    示例

此时,我们再创一个at命令,命令内容为date(显示日期)

创建完延时,等时间到了后,输入mail可以看到改命令

接着输入进程号(如下图)

注意:mail界面可按q退出

at -m

示例

 

8)at -d

at -d——删除指定任务

at -d 3(这里的数字为at任务编号,可以通过at -l查看)
—— 删除任务编号为3的at任务

我们先创一个at任务来试验at -d的删除

用at -l命令查看其任务编号,可以看到是13

随后我们用at -d删除该任务

删除之后再用at -l查看是否还存在此任务

可以看到,任务13已被删除

9)at -V(大写)

at -V显示at版本

at -V

示例

10)at -v(小写)

at -v查看时间

at -v now+1min

示例

 

(3)at黑/白名单

在 Linux 中,at 命令的黑白名单通过 /etc/at.allow 和 /etc/at.deny 文件实现,用于控制用户是否有权限使用 at 调度任务。

先创建一个新的用户test,方便后续观察实验,切换到新的用户

useradd test
—— 先创建一个新的用户test

示例 


su test
—— 切换到新的用户test

示例

完成后开始讲解at黑白名单

1)at黑名单

默认状态下,可以看到,在系统中所有用户都能执行at任务


那么如何禁止用户使用at命令呢?这里介绍at黑名单:at任务执行黑名单,在名单中的用户不能执行at任务

ll /etc/at.deny
—— at任务执行黑名单

示例 


向at黑名单中添加用户

我们先回到root用户,来添加黑名单用户

回到root后,创建打开at黑名单

vim /etc/at.deny

示例 

打开后:

再回到test用户,此时尝试at命令,会发现已被禁止使用 

这是因为:在/etc/at.deny文件中出现的用户是不能执行at任务的

2)at白名单

有黑名单也会有白名单,回到root,创建at白名单

touch /etc/at.allow

示例

at任务白名单,只有在白名单中的用户可以执行at任务注意:此名单在系统中不存在,创建后默认root用户


创建白名单,输入白名单用户

vim /etc/at.allow

示例

 创建完白名单后,回到test,发现已经可以使用at命令

注意:当系统中白名单出现,黑名单中的内容将被系统忽略

 

三、定时任务

1、概念

定时任务(计划任务)是计算机系统中用于在特定时间周期自动执行指定操作的功能。它广泛应用于系统维护、数据备份、自动化脚本执行等场景。

四、crontab命令(定时任务)

1、概念

crontabCron Table)是 Linux/Unix 系统中用于管理 周期性任务 的核心工具。通过它可以在固定时间、日期或间隔自动执行命令或脚本(如每日备份、定时清理等)。

2、命令

(1)开启crond.service的守护进程

crond.service是定时任务的守护进程

systemctl status crond.service

示例

(2)常用命令

 1)crontab -u root -e

以用户root(-u)来创建定时任务

crontab -u root -e

示例

 

编辑创建定时任务的命令:建立文件file1~5(touch)

2)crontab -l

-l 查看当前定时任务

crontab -l

示例

可以看到在1)中创建的touch命令,其中:

五颗星号分别代表:

3)crontab -r 

-r 删除用户root的定时任务

crontab -r -u root
—— 删除用户root的定时任务

示例

 

(3)系统级别crontab目录详解

每个目录的解释

当我们把要执行的动作记录为脚本,并把脚本放到相应的目录中他就会以相应的时间执行 


1) 自定义创建系统级别crontab任务(cron.d)

进入路径/etc/cron.d

cd /etc/cron.d

 在下图可以看到,通过ls命令查看是显示0hourly,说明还未创建自定义crontab任务,所以创建一个crontab任务:

vim lincoln(这里是用户名)

示例 

进入创建编辑界面后,输入:

* * * * * root touch /media/lin{1..5}
—— 注意:这里存在之前自己创建的目录或文件,请自行创建

示例 

 用监视器监视/media路径,可以看到文件已创建,监视命令:

watch -n 1 ls -l /media/

示例 

 

 

(4)cron黑/白名单

和at命令相似,cron命令也存在黑白名单机制

1)cron黑名单

黑名单阻止黑名单用户使用cron命令

查看cron黑名单

cat /etc/cron.deny


向cron黑名单中添加用户 

echo test> /etc/cron.deny


切换用户测试 

su - testcrontab -e


2)cron白名单 

当白名单出现,只有在名单中单用户能执行crontab

创建白名单

touch /etc/cron.allow

示例 


在白名单中添加用户 

echo test>/etc/cron.allow

示例 


切换用户测试 

su - testcrontab -e

示例

 

发现用户test已经可以使用cron命令 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/79758.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

软考 系统架构设计师系列知识点 —— 黑盒测试与白盒测试(1)

本文内容参考&#xff1a; 黑盒测试和白盒测试详解-CSDN博客 软件测试中的各种覆盖&#xff08;Coverage&#xff09;详解-CSDN博客 特此致谢&#xff01; 零、概述 黑盒测试又名为功能测试&#xff0c;主要目的是发现软件设计的需求或者是软件设计规格说明书中的错误缺陷。…

yolov11 epoch100轮 训练笔记5 kaggle comet

Football Players Detection using YOLOV11 | Kaggle !pip install comet_ml import comet_mlcomet_ml.login(project_name"c") Comet - Build Better Models Faster yolov11训练 100轮一眨眼训练完了 然而comet接不到yolo的sdk 优秀 训练17轮map就0.99了 v5训练100…

Ubuntu K8S(1.28.2) 节点/etc/kubernetes/manifests 不存在

Ubuntu K8S(1.28.2) 节点/etc/kubernetes/manifests 不存在 在查看日志&#xff08;journalctl -xefu kubelet&#xff09;时发现各节点/etc/kubernetes/manifests 不存在&#xff0c;但主节点没有异常 21080 file.go:104] "Unable to read config path" err"…

neo4j基础操作:命令行增删改查

目录 一&#xff0c;Neo4j的增 1.1.新增节点 1.2.新增关系 1.2.1创建节点时&#xff0c;创建关系 1.2.2在已有的节点上&#xff0c;创建关系 二&#xff0c;Neo4j的删除 2.1删除节点 2.1.1无关系的节点删除 2.1.2 有关系的节点删除 三&#xff0c;节点修改 3.1 给节点…

rollout 是什么:机器学习(强化学习)领域

rollout 是什么:机器学习(强化学习)领域 指从特定初始状态开始,按照某个策略或模型进行一系列动作和状态转移,直到达到终止状态或预定时间步数 。比如: 迷宫任务:强化学习代理在迷宫中,从起始点出发,按某策略(如随机选方向走)进行移动,直到找到出口或达到最大移动…

stm32之TIM定时中断详解

目录 1.引入1.1 简介1.2 类型1.2.1 基本定时器1.2.2 通用定时器1. 触发控制单元 (Trigger Control Unit)2. 输入捕获单元 (Input Capture Unit)3. 输出比较单元 (Output Compare Unit)4. CNT 计数器5. 自动重装载寄存器 (ARR)6. 预分频器 (PSC)7. 中断与 DMA 事件8. 刹车功能 (…

centos8源码安装openssl

前言&#xff1a; 在使用python3.11部署运行FastAPI时&#xff0c;由于其uvicorn需要使用openssl模块&#xff0c;导致没有安装openssl的服务器项目运行不起来. 【第一步】 我的网盘下载openssl-1.1.1n.tar.gz 提取码: vay9 【第二步】 上传到服务器解压 tar -zxvf opens…

vue3 动态修改系统title

vue3 动态修改系统title 修改前 修改后 1、封装 useTitle 工具函数 创建组合式 API&#xff0c;通过 watchEffect 监听标题变化&#xff1a; // composables/useTitle.js import { ref, watchEffect } from vue;export function useTitle(initialTitle) {const title r…

比较两种判断相同二叉树的方法:递归与遍历序列对比

在二叉树操作中&#xff0c;判断两棵树是否相同是一个常见的问题。本文将对比两种不同的解决方案&#xff1a;递归法和遍历序列对比法&#xff0c;分析它们的优缺点&#xff0c;并探讨为何递归法是更优的选择。 问题描述 给定两棵二叉树的根节点 p 和 q&#xff0c;判断它们是…

从0开始学习大模型--Day01--大模型是什么

初识大模型 在平时遇到问题时&#xff0c;我们总是习惯性地去运用各种搜索引擎如百度、知乎、CSDN等平台去搜索答案&#xff0c;但由于搜索到的内容质量参差不齐&#xff0c;检索到的内容只是单纯地根据关键字给出内容&#xff0c;往往看了几个网页都找不到答案&#xff1b;而…

【AI大模型】SpringBoot整合Spring AI 核心组件使用详解

目录 一、前言 二、Spring AI介绍 2.1 Spring AI介绍 2.2 Spring AI主要特点 2.3 Spring AI核心组件 2.4 Spring AI应用场景 2.5 Spring AI优势 2.5.1 与 Spring 生态无缝集成 2.5.2 模块化设计 2.5.3 简化 AI 集成 2.5.4 支持云原生和分布式计算 2.5.5 安全性保障…

洛谷 P9007 [入门赛 #9] 最澄澈的空与海 (Hard Version)

这道题可不入门。 [Problem Discription] \color{blue}{\texttt{[Problem Discription]}} [Problem Discription] 给定 n n n&#xff0c;求有多少组 ( x , y , z ) (x,y,z) (x,y,z) 满足&#xff1a; x − y z n ! x-\dfrac{y}{z}n! x−zy​n! x − y z n ! n \dfrac{x-y…

PostgreSQL 的 pg_stat_file 函数

PostgreSQL 的 pg_stat_file 函数 pg_stat_file 是 PostgreSQL 提供的一个系统管理函数&#xff0c;用于获取文件系统上文件的元数据信息。这个函数对于数据库管理员进行文件级别的监控和诊断非常有用。 一 函数基本语法 pg_stat_file(filename text [, missing_ok boolean …

关于麒麟服务器实现docker-compose服务开机自启

我本地服务器环境是麒麟V10版本&#xff1a; 首先确定docker-compose服务绝对路径命令&#xff1a; which docker-compose我这里输出是&#xff1a;/usr/bin/docker-compose 编辑服务文件&#xff1a; sudo vim /etc/systemd/system/docker-compose-webup.service[Unit] Desc…

基于 jQuery 实现复选框全选与选中项查询功能

在 Web 开发中&#xff0c;复选框是常见的交互元素&#xff0c;尤其是在涉及批量操作、数据筛选等场景时&#xff0c;全选功能和选中项查询功能显得尤为重要。本文将介绍如何使用 HTML、CSS 和 jQuery 实现一个具备全选、反选以及选中项查询功能的复选框组&#xff0c;帮助开发…

AfuseKt2.4.2 | 支持阿里云盘、Alist等平台视频播放,具备自动海报墙刮削功能的强大播放器

AfuseKt是一款功能强大的安卓端在线视频播放器&#xff0c;支持播放阿里云盘、Alist、WebDAV等平台的视频内容。它具备自动海报墙刮削功能&#xff0c;能自动生成影片信息和海报墙&#xff0c;提供良好的视觉体验。此外&#xff0c;它还支持倍速播放、字幕、音轨切换等多种实用…

Netlink在SONiC中的应用

Netlink在SONiC中的应用 Netlink介绍 Netlink 是 Linux 内核态程序与用户空间程序之间进行通信的机制之一&#xff0c;原本是用于传递网络协议栈中的各种控制消息。它采用和套接字&#xff08;socket&#xff09;编程接口相同的形式&#xff0c;常用于配置内核网络子系统&…

语音合成之十一 提升TTS语音合成效果:低质量数据清洗、增强与数据扩增

低质量数据清洗、增强与数据扩增 1. 引言&#xff1a;TTS的基石——数据质量2. 基础&#xff1a;TTS数据准备工作流2.1 规划&#xff1a;定义蓝图2.2 执行&#xff1a;从原始数据到训练就绪格式2.3 最佳实践与可复现性 3. 攻克缺陷&#xff1a;低质量语音数据的清洗与增强3.2 手…

Java IO流分类与记忆方法

Java IO流分类与记忆方法 在Java IO流体系中,理解节点流和包装流的区别是掌握IO编程的关键。 一、核心分类标准 1. 节点流(Node Stream) 直接对接数据源:直接连接物理IO设备(文件、网络、内存等)基础功能:提供最基础的读写能力命名特征:通常包含数据源类型名称(如Fi…

架构师如何构建个人IP:职业规划与业务战略的双重提升

在数字化时代&#xff0c;软件架构师的角色已从单纯的技术专家转变为兼具技术领导力和业务影响力的复合型人才。如何构建个人IP&#xff0c;提升行业影响力&#xff0c;成为架构师职业发展的关键课题。本文从个人认知、业务战略、架构决策、产品思维四个维度&#xff0c;探讨架…