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

news2025/5/10 3:40:04

一、延时任务

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 - test

crontab -e


2)cron白名单 

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

创建白名单

touch /etc/cron.allow

示例 


在白名单中添加用户 

echo test>/etc/cron.allow

示例 


切换用户测试 

su - test

crontab -e

示例

 

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

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

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

相关文章

使用阿里AI的API接口实现图片内容提取功能

参考链接地址&#xff1a;如何使用Qwen-VL模型_大模型服务平台百炼(Model Studio)-阿里云帮助中心 在windows下&#xff0c;使用python语言测试&#xff0c;版本&#xff1a;Python 3.8.9 一. 使用QVQ模型解决图片数学难题 import os import base64 import requests# base 64 …

从零开始搭建你的个人博客:使用 GitHub Pages 免费部署静态网站

&#x1f310; 从零开始搭建你的个人博客&#xff1a;使用 GitHub Pages 免费部署静态网站 在互联网时代&#xff0c;拥有一个属于自己的网站不仅是一种展示方式&#xff0c;更是一种技术能力的体现。今天我们将一步步学习如何通过 GitHub Pages 搭建一个免费的个人博客或简历…

C#串口通信

在C#中使用串口通信比较方便&#xff0c;.Net 提供了现成的类&#xff0c; SerialPort类。 本文不对原理啥的进行介绍&#xff0c;只介绍SerialPort类的使用。 SerialProt类内部是调用了CreateFile&#xff0c;WriteFile等WinAPI函数来实现串口通信。 在后期的Windows编程系…

服务器配置llama-factory问题解决

在配置运行llama-factory&#xff0c;环境问题后显示环境问题。这边给大家附上连接&#xff0c;我们的是liunx环境但是还是一样的。大家也记得先配置虚拟环境。 LLaMA-Factory部署以及微调大模型_llamafactory微调大模型-CSDN博客 之后大家看看遇到的问题是不是我这样。 AI搜索…

Spring Boot + Vue 实现在线视频教育平台

一、项目技术选型 前端技术&#xff1a; HTML CSS JavaScript Vue.js 前端框架 后端技术&#xff1a; Spring Boot 轻量级后端框架 MyBatis 持久层框架 数据库&#xff1a; MySQL 5.x / 8.0 开发环境&#xff1a; IDE&#xff1a;Eclipse / IntelliJ IDEA JDK&…

使用Jmeter进行核心API压力测试

最近公司有发布会&#xff0c;需要对全链路比较核心的API的进行压测&#xff0c;今天正好分享下压测软件Jmeter的使用。 一、什么是Jmeter? JMeter 是 Apache 旗下的基于 Java 的开源性能测试工具。最初被设计用于 Web 应用测试&#xff0c;现已扩展到可测试多种不同的应用程…

JavaScript中数组和对象不同遍历方法的顺序规则

在JavaScript中&#xff0c;不同遍历方法的顺序规则和适用场景存在显著差异。以下是主要方法的遍历顺序总结&#xff1a; 一、数组遍历方法 for循环 • 严格按数组索引顺序遍历&#xff08;0 → length-1&#xff09; • 支持break和continue中断循环 • 性能最优&#xff0c;…

redis----通用命令

文章目录 前言一、运行redis二、help [command]三、通用命令 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 学习一些通用命令 以下操作在windows中演示 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、运行redis 我们先c…

IntelliJ IDEA 保姆级使用教程

文章目录 一、创建项目二、创建模块三、创建包四、创建类五、编写代码六、运行代码注意 七、IDEA 常见设置1、主题2、字体3、背景色 八、IDEA 常用快捷键九、IDEA 常见操作9.1、类操作9.1.1、删除类文件9.1.2、修改类名称注意 9.2、模块操作9.2.1、修改模块名快速查看 9.2.2、导…

Comfyui 与 SDwebui

ComfyUI和SD WebUI是基于Stable Diffusion模型的两种不同用户界面工具&#xff0c;它们在功能、用户体验和适用场景上各有优劣。 1. 功能与灵活性 ComfyUI&#xff1a;ComfyUI以其节点式工作流设计为核心&#xff0c;强调用户自定义和灵活性。用户可以通过连接不同的模块&…

WiseAD:基于视觉-语言模型的知识增强型端到端自动驾驶——论文阅读

《WiseAD: Knowledge Augmented End-to-End Autonomous Driving with Vision-Language Model》2024年12月发表&#xff0c;来自新加坡国立和浙大的论文。 在快速发展的视觉语言模型&#xff08;VLM&#xff09;中&#xff0c;一般人类知识和令人印象深刻的逻辑推理能力的出现&a…

探索SQLMesh中的Jinja宏:提升SQL查询的灵活性与复用性

在数据工程和数据分析领域&#xff0c;SQL是不可或缺的工具。随着项目复杂度的增加&#xff0c;如何高效地管理和复用SQL代码成为了一个重要课题。SQLMesh作为一款强大的工具&#xff0c;不仅支持标准的SQL语法&#xff0c;还引入了Jinja模板引擎的宏功能&#xff0c;极大地提升…

对Redis组件的深入探讨

目录 1、磁盘和内存 1.1、概念 1.2、区别 1.3、联系 2、redis基本特性 2.1、数据结构 2.2、性能 2.3、事件驱动架构 2.4、原子性 3、redis模型 3.1、单线程 3.2、事件驱动模型 3.3、epoll多路复用 4、数据持久化 4.1、RDB快照 4.2、AOF&#xff08;Append Only…

Uni-app 组件使用

在前端开发领域&#xff0c;能够高效地创建跨平台应用是开发者们一直追求的目标。Uni-app 凭借其 “一次开发&#xff0c;多端部署” 的特性&#xff0c;成为了众多开发者的首选框架。而组件作为 Uni-app 开发的基础单元&#xff0c;合理运用组件能够极大地提升开发效率和代码的…

嵌入式学习笔记 - STM32 SRAM控制器FSMC

一 SRAM控制器内部结构图&#xff1a; 以下以512K SRAM芯片为例 二 SRAM地址矩阵/寻址方式&#xff1a; SRAM的地址寻址方式通过行地址与列地址交互的方式存储数据 三 STM32 地址映射 从STM32的地址映射中可以看出&#xff0c;FSMC控制器支持扩展4块外部存储器区域&#xff0…

数据封装的过程

数据的封装过程 传输层 UDP 直接将数据封装为UDP数据报​&#xff0c;添加UDP头部&#xff08;8B&#xff09;。 要点&#xff1a; UDP首部简单&#xff0c;无连接不可靠、无重传、无拥塞控制&#xff0c;适用于实时性要求较高的通讯&#xff1b;不需要源端口或不想计算检…

Docker部署常见应用之Superset

文章目录 使用 Docker 部署使用 Docker Compose 部署参考文章 以下是使用 Docker 部署 Superset 并将存储配置为 MySQL 的详细步骤&#xff1a; 使用 Docker 部署 获取Superset镜像: 使用Docker从官方仓库拉取Superset镜像&#xff1a;docker pull apache/superset:4.0.0创建 …

住宅 IP 地址:数字时代的真实网络身份载体

在互联网的底层架构中&#xff0c;IP 地址是设备连接网络的 “数字身份证”。而住宅 IP 地址作为其中最贴近真实用户的类型&#xff0c;特指互联网服务提供商&#xff08;ISP&#xff09;分配给家庭或个人用户的 IP 地址&#xff0c;具有以下核心特征&#xff1a; 物理关联性 …

[SSM]-Spring介绍

框架是什么 框架 framework 建筑学: 用于承载一个系统必要功能的基础要素的集合计算机: 某特定领域系统的一组约定, 标准, 代码库以及工具的集合 框架vs工具 框架作为项目的骨架合基础结构, 提供了高层次的抽象和可复用性工具作为辅助手段, 帮助开发者完成特定任务并提高工作…

今天的python练习题

目录 一、每日一言 二、练习题 三、效果展示 四、下次题目 五、总结 一、每日一言 晚上8点到的&#xff0c;还是会被感动到&#xff0c;有一位列车员同志在检票期间&#xff0c;叫我到列车员专座位上去坐&#xff0c;我很感激他&#xff0c;温暖人心&#xff0c;所以人间填我…