【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、概念
crontab
(Cron 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命令
相关文章:

【Linux笔记】系统的延迟任务、定时任务极其相关命令(at、crontab极其黑白名单等)
一、延时任务 1、概念 延时任务(Delayed Jobs)通常指在指定时间或特定条件满足后执行的任务。常见的实现方式包括 at 和 batch 命令,以及结合 cron 的调度功能。 2、命令 延时任务的命令最常用的是at命令,第二大节会详细介绍。…...
转换算子和行动算子的区别
转换算子和行动算子主要是在分布式计算框架(如 Apache Spark)里常用的概念,它们在功能、执行机制、返回结果等方面存在明显区别,以下为你详细介绍: 定义与功能 返回结果 如何在使用转换算子和行动算子时避免出现内存溢…...

使用阿里AI的API接口实现图片内容提取功能
参考链接地址:如何使用Qwen-VL模型_大模型服务平台百炼(Model Studio)-阿里云帮助中心 在windows下,使用python语言测试,版本:Python 3.8.9 一. 使用QVQ模型解决图片数学难题 import os import base64 import requests# base 64 …...
告别散乱的 @ExceptionHandler:实现统一、可维护的 Spring Boot 错误处理
Spring Boot 的异常处理机制一直都烂得可以。即便到了 2025 年,有了这么多进步和新版本,开发者们发现自己还是在跟 ControllerAdvice、分散各处的 ExceptionHandler 方法以及五花八门的响应结构较劲。这真的是一团糟。 无论你是在构建 REST API、微服务…...
MariaDB 与 MySQL 的关系:从同源到分道扬镳
MariaDB 与 MySQL 的关系:从同源到分道扬镳 1. 起源:MySQL 的辉煌与危机 MySQL 是最流行的开源关系型数据库之一,由瑞典公司 MySQL AB 开发,并于 1995 年 首次发布。由于其高性能、易用性和开源特性,MySQL 迅速成为 L…...

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

C#串口通信
在C#中使用串口通信比较方便,.Net 提供了现成的类, SerialPort类。 本文不对原理啥的进行介绍,只介绍SerialPort类的使用。 SerialProt类内部是调用了CreateFile,WriteFile等WinAPI函数来实现串口通信。 在后期的Windows编程系…...
Qt 显示QRegExp 和 QtXml 不存在问题
QRegExp 和 QtXml 问题 在Qt6 中 已被弃用; 1)QRegExp 已被弃用,改用 QRegularExpression Qt5 → Qt6 重大变更:QRegExp 被移到了 Qt5Compat 模块,默认不在 Qt6 核心模块中。 错误类型解决方法QRegExp 找不到改用 Q…...
【训练】Qwen2.5VL 多机多卡 Grounding Box定位
之前的相关文章: 【深度学习】LLaMA-Factory微调sft Qwen2-VL进行印章识别 https://www.dong-blog.fun/post/1661 使用LLaMA-Factory微调sft Qwen2-VL-7B-Instruct https://www.dong-blog.fun/post/1762 构建最新的LLaMA-Factory镜像 https://www.dong-blog.f…...

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

Spring Boot + Vue 实现在线视频教育平台
一、项目技术选型 前端技术: HTML CSS JavaScript Vue.js 前端框架 后端技术: Spring Boot 轻量级后端框架 MyBatis 持久层框架 数据库: MySQL 5.x / 8.0 开发环境: IDE:Eclipse / IntelliJ IDEA JDK&…...

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

JavaScript中数组和对象不同遍历方法的顺序规则
在JavaScript中,不同遍历方法的顺序规则和适用场景存在显著差异。以下是主要方法的遍历顺序总结: 一、数组遍历方法 for循环 • 严格按数组索引顺序遍历(0 → length-1) • 支持break和continue中断循环 • 性能最优,…...
【机器学习-线性回归-5】多元线性回归:概念、原理与实现详解
线性回归是机器学习中最基础且广泛应用的算法之一,而多元线性回归则是其重要扩展。本文将全面介绍多元线性回归的核心概念、数学原理及多种实现方式,帮助读者深入理解这一强大的预测工具。 1. 多元线性回归概述 1.1 什么是多元线性回归 多元线性回归(…...
【软件设计师:数据结构】1.数据结构基础(一)
一 线性表 1.线性表定义 线性表是n个元素的有限序列,通常记为(a1,a2,…,an)。 特点: 存在惟一的表头和表尾。除了表头外,表中的每一个元素均只有惟一的直接前驱。除了表尾外,表中的每一个元素均只有惟一的直接后继。2.线性表的存储结构 (1)顺序存储 是用一组地址连续…...
简单面试提问
Nosql非关系型数据库: Mongodb:开源、json形式储存、c编写 Redis:key-value形式储存,储存在内存,c编写 关系型数据库: sqlite;:轻量型、0配置、磁盘存储、支持多种语言 mysql:开源…...
探秘数据中台:五大核心平台的功能全景解析
数据中台作为企业数据资产的 “智慧中枢”,通过整合数据处理全流程的核心功能,实现数据价值的深度挖掘与高效应用。以下从五大核心平台出发,全面拆解数据中台的功能架构与应用价值。 一、数据可视化平台:让数据 “开口说话” 1.…...
leetcode 3342. 到达最后一个房间的最少时间 II 中等
有一个地窖,地窖中有 n x m 个房间,它们呈网格状排布。 给你一个大小为 n x m 的二维数组 moveTime ,其中 moveTime[i][j] 表示在这个时刻 以后 你才可以 开始 往这个房间 移动 。你在时刻 t 0 时从房间 (0, 0) 出发,每次可以移…...

redis----通用命令
文章目录 前言一、运行redis二、help [command]三、通用命令 前言 提示:这里可以添加本文要记录的大概内容: 学习一些通用命令 以下操作在windows中演示 提示:以下是本篇文章正文内容,下面案例可供参考 一、运行redis 我们先c…...
PostgreSQL 查看索引碎片的方法
PostgreSQL 查看索引碎片的方法 在 PostgreSQL 中,索引碎片(Index Fragmentation)是指索引由于频繁的插入、更新和删除操作导致物理存储不连续,从而影响查询性能的情况。以下是几种查看索引碎片的方法: 一 使用 pgstattuple 扩展 1.1 安装…...
pip 常用命令及配置
一、python -m pip install 和 pip install 的区别 在讲解 pip 的命令之前,我们有必要了解一下 python -m pip install 和 pip install 的区别,以便于我们在不同的场景使用不同的方式。 python -m pip install 命令使用 python 可执行文件将 pip 模块作…...

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模型的两种不同用户界面工具,它们在功能、用户体验和适用场景上各有优劣。 1. 功能与灵活性 ComfyUI:ComfyUI以其节点式工作流设计为核心,强调用户自定义和灵活性。用户可以通过连接不同的模块&…...
Ubuntu Linux系统配置账号无密码sudo
在Linux系统中,配置无密码sudo可以通过修改sudoers文件来实现。以下是具体的配置步骤 一、编辑sudoers文件 输入sudo visudo命令来编辑sudo的配置文件。visudo是一个专门用于编辑sudoers文件的命令,它会在保存前检查语法错误,从而防止可能的…...

WiseAD:基于视觉-语言模型的知识增强型端到端自动驾驶——论文阅读
《WiseAD: Knowledge Augmented End-to-End Autonomous Driving with Vision-Language Model》2024年12月发表,来自新加坡国立和浙大的论文。 在快速发展的视觉语言模型(VLM)中,一般人类知识和令人印象深刻的逻辑推理能力的出现&a…...

探索SQLMesh中的Jinja宏:提升SQL查询的灵活性与复用性
在数据工程和数据分析领域,SQL是不可或缺的工具。随着项目复杂度的增加,如何高效地管理和复用SQL代码成为了一个重要课题。SQLMesh作为一款强大的工具,不仅支持标准的SQL语法,还引入了Jinja模板引擎的宏功能,极大地提升…...
配置linux自启java程序
配置linux自启java程序 1、切换root用户,并进入自启配置目录 sudo su - cd /etc/systemd/system2、编写启动文件 例如:class-server.service vi class-server.service脚本内容 [Unit] DescriptionClassServer Java Application Afternetwork.target…...

对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(Append Only…...

Uni-app 组件使用
在前端开发领域,能够高效地创建跨平台应用是开发者们一直追求的目标。Uni-app 凭借其 “一次开发,多端部署” 的特性,成为了众多开发者的首选框架。而组件作为 Uni-app 开发的基础单元,合理运用组件能够极大地提升开发效率和代码的…...
k8s pod request/limit 值不带单位会发生什么?
在 Kubernetes 中,Pod 的 resources.requests 和 limits 字段必须显式指定单位。 一、未正确设置requests和limits字段的单位会产生影响? 1. 资源分配严重不足 例如,以下配置存在严重错误: resources:requests:memory: 512 # …...