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)
酷番叔酷番叔
上一篇 2025年7月21日 17:37
下一篇 2025年7月21日 17:47

相关推荐

  • sed命令$as怎么处理

    sed命令中的$a表示匹配以a`结尾的行,可

    2025年8月17日
    22500
  • 如何设置a链接的背景图片?

    在网页设计中,a链接(即超链接)的背景图片运用是提升视觉效果和用户体验的重要手段,通过为链接添加背景图片,不仅可以增强页面的视觉吸引力,还能更好地传达链接的语义和功能,本文将围绕a链接背景图片的设计原则、实现方法、注意事项以及优化技巧展开详细探讨,a链接背景图片的设计原则设计a链接背景图片时,需遵循以下核心原则……

    2025年11月27日
    21500
  • 国内云主机,哪家服务商性价比更高?

    阿里云和腾讯云通常性价比更高,适合中小企业;华为云稳定性强,也是不错的选择。

    2026年2月17日
    17500
  • 如何退出U-Boot命令模式?

    使用 boot 命令启动操作系统操作:在 U-Boot 命令行输入 boot 或 bootm(根据系统配置),效果:立即加载并启动内核,完全退出 U-Boot 环境,适用场景:完成配置后正常启动系统(最常用方式),注意:需提前设置好 bootcmd 环境变量或手动指定内核地址,使用 exit 命令退出子菜单操作……

    2025年7月7日
    33500
  • Linux终端粘贴为何总出错?

    图形界面下的终端粘贴(如GNOME Terminal、Konsole等)适用于Ubuntu、Fedora等带桌面环境的系统:键盘快捷键Ctrl+Shift+V:最通用的粘贴方式(部分终端如Terminator、Xfce Terminal支持),Shift+Insert:适用于所有终端(包括远程SSH连接),注意……

    2025年6月30日
    44600

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信