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

Linux at命令详解:轻松调度延迟任务

目录

1. 什么是延迟用户任务?

1.1 延迟任务的概念

1.2 实际应用场景

2. at命令简介

2.1 at是什么?

2.2 at的工作原理

2.3 队列系统

3. 创建延迟任务

3.1 基本语法

3.2 输入命令的两种方式

方式一:交互式输入(键盘输入)

方式二:通过脚本文件输入

4. 时间规格详解

4.1 时间格式示例

4.2 时间规格详细说明

相对时间格式

绝对时间格式

4.3 日期逻辑规则

5. 查看和管理任务

5.1 查看待处理任务

5.2 理解atq输出格式

5.3 查看任务详情

6. 删除任务

6.1 删除单个任务

6.2 删除多个任务

7. 权限管理

7.1 用户权限规则

7.2 权限示例

8. 完整工作流程示例

场景:设置防火墙重置任务


1. 什么是延迟用户任务?

1.1 延迟任务的概念

延迟任务指的是在未来的特定时间点运行的一个或多个命令。想象一下,你需要让计算机在半夜自动执行备份,或者让某个命令在10分钟后自动运行,这就是延迟任务的典型应用场景。

1.2 实际应用场景

  • 用户场景:计划在半夜执行耗时很长的系统维护任务

  • 管理员场景:设置防火墙重置任务作为安全备份,如果新的防火墙配置正常,就取消这个重置任务


2. at命令简介

2.1 at是什么?

at是Red Hat Enterprise Linux中默认安装的任务调度工具,它包含三个核心组件:

  • atd守护进程:在后台运行,负责执行排队的任务

  • at命令:用于创建和管理延迟任务

  • atq命令:用于查看等待执行的任务队列

2.2 at的工作原理

用户使用at命令创建任务 → 任务加入队列 → atd守护进程在指定时间执行任务

2.3 队列系统

atd守护进程提供26个队列(a-z),具有以下特点:

  • 队列按字母顺序排列

  • 字母越靠后,系统优先级越低

  • 默认情况下,任务会进入队列'a'


3. 创建延迟任务

3.1 基本语法

at TIMESPEC

3.2 输入命令的两种方式

方式一:交互式输入(键盘输入)
[user@host ~]$ at 14:30
at> echo "任务开始执行" > /tmp/at_result
at> date >> /tmp/at_result
at> <EOT>  # 按Ctrl+D结束输入
job 5 at Thu May 19 14:30:00 2022
方式二:通过脚本文件输入
# 创建脚本文件
[user@host ~]$ cat > myscript << EOF
echo "这是自动执行的任务"
date
whoami
EOF# 使用输入重定向调度任务
[user@host ~]$ at now +5min < myscript
job 6 at Thu May 19 21:06:00 2022

4. 时间规格详解

4.1 时间格式示例

at命令支持多种自然语言时间格式:

时间格式说明示例
具体时间24小时制或12小时制14:3002:30pm
相对时间从当前时间开始计算now +5minnow +1 hour
特殊时间点预定义的时间名称midnightnoonteatime
完整日期时间指定具体日期和时间5pm august 3 2021

4.2 时间规格详细说明

相对时间格式
# 几分钟后
at now +5min
at now +10 minutes# 几小时后  
at now +1 hour
at now +2 hours# 几天后
at now +3 days
绝对时间格式
# 今天或明天的具体时间
at 21:00        # 如果现在21:01,则安排到明天21:00
at 21:03        # 如果现在21:01,则安排到今天21:03# 指定具体日期
at 14:30 tomorrow
at teatime august 3 2023  # teatime是16:00
at noon +4 days          # 4天后的中午12点

4.3 日期逻辑规则

  • 只提供时间:日期默认为当天或第二天(如果时间已过)

  • 只提供日期:时间默认为当前时间

  • 时间和日期都提供:按指定时间执行


5. 查看和管理任务

5.1 查看待处理任务

# 使用atq命令
[user@host ~]$ atq
28 Mon May 16 05:13:00 2022 a user
29 Tue May 17 16:00:00 2022 h user
30 Wed May 18 12:00:00 2022 a user# 或者使用at -l命令(效果相同)
[user@host ~]$ at -l

5.2 理解atq输出格式

每行输出的含义:

作业编号 执行时间 队列 所有者
  • 作业编号:任务的唯一标识符

  • 执行时间:任务计划运行的具体时间

  • 队列:任务所在的队列(a-z)

  • 所有者:创建该任务的用户

5.3 查看任务详情

# 查看作业编号为28的任务详情
[user@host ~]$ at -c 28

这个命令会显示:

  • 任务执行时的环境变量

  • 将要运行的具体命令

  • 其他执行上下文信息


6. 删除任务

6.1 删除单个任务

# 删除作业编号为28的任务
[user@host ~]$ atrm 28# 或者使用等效命令
[user@host ~]$ at -d 28

6.2 删除多个任务

# 一次性删除多个任务
[user@host ~]$ atrm 28 29 30

7. 权限管理

7.1 用户权限规则

  • 普通用户:只能查看和管理自己创建的任务

  • root用户:可以查看和管理系统中所有用户的任务

7.2 权限示例

# 普通用户user1只能看到自己的任务
[user1@host ~]$ atq
31 Thu May 19 10:00:00 2022 a user1# root用户可以看到所有用户的任务
[root@host ~]$ atq
31 Thu May 19 10:00:00 2022 a user1
32 Fri May 20 15:30:00 2022 b user2

8. 完整工作流程示例

场景:设置防火墙重置任务

# 1. 创建重置脚本
[admin@host ~]$ cat > reset_firewall.sh << EOF
#!/bin/bash
echo "$(date): 重置防火墙配置" >> /var/log/firewall_reset.log
# 这里放置具体的防火墙重置命令
EOF# 2. 调度10分钟后执行
[admin@host ~]$ at now +10min < reset_firewall.sh
job 33 at Thu May 19 21:11:00 2022# 3. 确认任务已调度
[admin@host ~]$ atq
33 Thu May 19 21:11:00 2022 a admin# 4. 如果新的防火墙配置正常,删除重置任务
[admin@host ~]$ atrm 33

http://www.dtcms.com/a/532165.html

相关文章:

  • 线程停止、休眠、礼让、强制执行、观测线程状态
  • 复盘|嵌入式Linux驱动开发之I2C子系统
  • AI Agent常用的RAG有哪些种,分别适用于什么情况
  • 对中兴光猫zteOnu.exe项目的简单分析(提供下载地址)
  • 有没有专门做中考卷子的网站网站建设培训要多久
  • 做网站图片用什么格式最好个人网站备案能做宣传用么
  • JAVA1026 方法;类:抽象类、抽象类继承;接口、接口继承 Linux:Mysql
  • 密码学系列 - 零知识证明(ZKP) - NTT与MSM的总结
  • 《解决界面交互痛点:WaterFlow 瀑布流、双层嵌套滚动、键盘避让与跨 Ability 跳转实践》
  • 网页设计建立站点步骤做网站的广告词
  • Spring Boot3零基础教程,生命周期启动加载机制,笔记64
  • StarGantt在线甘特图最新版本评测
  • 43.渗透-Kali Linux-工具-Ettercap(dns欺骗)
  • 详解C++中的迭代器
  • 区块链论文速读 CCF A--USENIX Security 2025(2)
  • 基于区块链的新能源管理平台的设计与实现(源码+文档)
  • 2025年10月26日 AI大事件
  • 企业建站个人建站源码沧州专业网站建设公司
  • 基于springboot的电影评论网站系统设计与实现
  • 1.2.1.3 大数据方法论与实践指南-一种跨团队业务结算方式探索
  • 西安地产网站建设百度手机管家
  • NoSQL 简介
  • C++ 分治 快速排序优化 三指针快排 力扣 面试题 17.14. 最小K个数 题解 每日一题
  • 网站建设业务员怎么做适合建设网站的国外服务器
  • 【第1章】基于FPGA的图像形态学处理学习教程——目录
  • stm32单片机命名规则,c6t6只有32KB,c8t6有64KB
  • 基于华为设备的 OSPF+MSTP+DHCP+NAT 综合网络架构实现
  • 使用uniapp——实现微信小程序的拖拽排序(vue3+ts)
  • 5.23基于 LabVIEW 的科学计算器设计
  • STM32 异常和中断