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

相关推荐

  • 如何设置Access命令按钮的凸起显示效果?

    在Access数据库中,命令按钮的“凸起”效果通常指按钮呈现3D立体感,与默认平面按钮形成视觉差异,提升界面交互体验,实现这一效果主要通过属性设置、VBA事件交互或图片填充三种方式,不同版本(如Access 2003及早期版本与Access 2010及以上现代版本)的操作路径略有差异,但核心逻辑一致,以下将结合……

    2025年9月8日
    8500
  • ASP集成开发环境有哪些?

    ASP集成开发环境(Integrated Development Environment,简称IDE)是开发ASP(Active Server Pages)应用程序的重要工具,它集成了代码编辑、调试、测试和部署等功能,能够显著提升开发效率和代码质量,随着Web技术的不断发展,ASP集成开发环境也在持续演进,为开……

    2025年12月16日
    5500
  • awesomiumsdk是什么

    Awesomium SDK 是一个跨平台的 Web 技术集成框架,主要用于在原生应用程序中嵌入和渲染 Web 内容,它基于 Chromium 内核,为开发者提供了强大的 Web 浏览器功能,同时保持与桌面应用程序的深度集成,无论是 Windows、Linux 还是 macOS 平台,Awesomium SDK……

    2025年12月7日
    4600
  • AutoCAD放样命令怎么用?详细操作步骤、方法及使用技巧解析

    AutoCAD中的放样命令(LOFT)是通过多个横截面轮廓生成三维实体或曲面的强大工具,常用于创建管道、弯头、异形零件等复杂模型,要熟练使用放样命令,需从准备工作、操作步骤、参数设置等方面系统掌握,放样前的准备工作放样的核心是横截面轮廓,因此需先创建符合条件的轮廓图形,具体要求如下:轮廓类型:支持多段线、圆、椭……

    2025年8月30日
    9300
  • asp问答系统源码如何获取?

    asp问答系统源码是一种基于ASP(Active Server Pages)技术开发的开源或商业解决方案,旨在帮助用户快速搭建功能完善的在线问答平台,该系统通常包含用户管理、问题发布、回答互动、搜索分类等核心功能模块,适用于企业内部知识库、教育机构答疑社区或技术交流论坛等多种场景,以下从技术架构、功能模块、开发……

    2025年12月16日
    5600

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信