Linux at命令如何定时执行任务?

at 是 Linux 中用于安排一次性定时任务的核心工具,它允许用户在指定时间执行命令或脚本(例如备份文件、发送邮件或重启服务),任务执行后自动消失,适合临时性计划任务。


安装与基本语法

  1. 安装(多数系统已预装)
    若未安装,执行以下命令:

    sudo apt install at    # Debian/Ubuntu
    sudo yum install at    # CentOS/RHEL
  2. 启动服务

    sudo systemctl enable --now atd  # 启用并启动守护进程
  3. 基础语法

    at [选项] 时间

    输入命令后按 Enter,在 at> 提示符下输入要执行的命令,最后按 Ctrl+D 保存。


指定时间的 5 种常用格式

  1. 具体时间点

    at 14:30          # 14:30
    at 2:30 PM        # 14:30(12小时制)
    at 09:00 2025-08-01 # 指定日期
  2. 相对时间

    at now + 2 hours  # 2小时后
    at now + 30 min   # 30分钟后
    at noon + 1 day   # 明天中午
  3. at midnight       # 今晚午夜
    at teatime        # 下午16:00(系统默认)

核心操作示例

  1. 创建定时任务

    $ at now + 5 min
    at> /home/user/backup.sh  # 输入要执行的脚本
    at> echo "Done!" | mail -s "Alert" admin@example.com
    at> <EOT>                 # 按 Ctrl+D 保存
    job 3 at Mon Jul 15 10:25:00 2025
  2. 查看队列中的任务

    atq                      # 列出所有待执行任务
    # 输出示例:3   Mon Jul 15 10:25:00 2025 a user
  3. 删除任务

    atrm 3                   # 删除ID为3的任务
  4. 从文件读取命令

    at 15:00 -f /path/to/script.sh

实用选项详解

选项 作用
-m 任务完成后发送邮件给用户
-c 任务ID 查看任务的详细命令内容
-l 等同 atq,列出任务
-d 任务ID 等同 atrm,删除任务
-t 时间 使用 [[CC]YY]MMDDhhmm 格式时间

注意事项

  1. 权限控制

    • 通过 /etc/at.allow/etc/at.deny 文件管理用户权限:
      • at.allow 存在,仅允许列表中的用户使用 at
      • at.allow 不存在,检查 at.deny(黑名单)
      • 两文件均不存在时,仅 root 可用
  2. 环境变量问题
    at 默认使用最小环境变量,建议在脚本中使用绝对路径:

    at 08:00
    at> /usr/bin/python3 /data/scripts/cleanup.py  # 推荐
  3. 输出处理
    命令的输出会通过邮件发送给用户(除非重定向):

    at 09:00 <<EOF
    /opt/monitor.sh > /tmp/log.txt 2>&1  # 重定向输出到文件
    EOF

常见问题解决

  1. 任务未执行?

    • 检查 atd 服务状态:systemctl status atd
    • 查看系统日志:journalctl -u atd
    • 确认时间格式正确(避免时区混淆)
  2. 如何调试任务?
    使用 -c 查看任务内容:

    at -c 3 | less  # 检查ID为3的任务详情
  3. cron 的区别
    | 工具 | 类型 | 适用场景 |
    |——–|————|————————|
    | at | 一次性任务 | 临时计划(如维护提醒) |
    | cron | 周期性任务 | 日常自动化(如日志清理)|


安全实践

  • 敏感操作限制:避免在 at 中执行 rm -rf / 等危险命令
  • 日志审计:通过 syslog 查看 /var/log/syslog 中的 atd 记录
  • 权限最小化:普通用户任务应限制在个人目录内

引用说明参考 Linux 官方手册(man at)、IBM 开发者文档及 Red Hat 系统管理指南,实践前请确认您的系统版本,部分选项可能因发行版差异略有不同。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/8262.html

(0)
酷番叔酷番叔
上一篇 4小时前
下一篇 4小时前

相关推荐

  • Windows 10命令提示符实用技巧有哪些?

    Windows 10命令提示符是高效管理系统、执行自动化任务的核心工具,本指南详解常用命令(如文件操作、网络配置、系统信息查询),助你掌握基础与进阶技巧,提升操作效率,适合系统管理员和普通用户学习使用。

    2025年7月8日
    1000
  • 安全防护你真的做对了吗?

    安全第一是任何活动的首要原则,必须置于所有决策和行动的核心位置,确保人员、财产和环境免受损害,这是不可妥协的底线。

    2025年7月7日
    1300
  • VFP如何快速给数据表增加字段?

    核心命令语法ALTER TABLE <表名>ADD COLUMN <字段名> <数据类型> [ (宽度 [, 精度]) ][NULL | NOT NULL][DEFAULT <默认值>][CHECK <条件表达式> [ERROR <错误提示&gt……

    2025年6月15日
    1400
  • MATLAB如何清除命令与变量?

    清除命令窗口显示内容目的:清空命令窗口的文字输出(屏幕显示),不影响变量和程序运行,方法:使用 clc 命令操作步骤:在命令窗口直接输入:clc按 Enter 键执行,屏幕瞬间清空,注意:clc 仅清除显示内容,工作空间中的变量仍保留(可通过 whos 查看),删除工作空间变量目的:释放内存,移除全部或指定变量……

    2025年6月21日
    1500
  • 内存真能靠命令安装吗?

    内存是实体硬件,无法通过软件命令安装,必须手动打开机箱,将内存条插入主板对应的插槽中完成物理安装。

    2025年6月22日
    1400

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信