搜索

24.3. 使用 at 将作业计划在特定时间运行

download PDF

若要计划一个称为作业的一次性任务以在指定时间运行一次,请使用 at 实用程序。

用户使用 at 实用程序指定 at 作业。然后,作业由 atd 服务执行。

24.3.1. at Jobs 的先决条件

在调度 at 作业前

  1. 安装 at 软件包:

    ~]# yum install at
  2. 安装时,已启用 atd 服务 - 设为在引导时自动启动。如果禁用该服务,启用该服务:

    ~]# systemctl enable atd.service
  3. 为当前会话启动 atd 服务:

    ~]# systemctl start atd.service

24.3.2. 调度 at 作业

  1. 作业始终由某些用户运行。以所需用户身份登录并运行:

    ~]# at time

    使用时间规格替换 time

    有关指定时间的详情,请查看 at(1)手册页和 /usr/share/doc/at/timespec 文件。

    例 24.1. 指定 At 的时间

    要在 15:00 执行作业,请运行:

    ~]# at 15:00

    如果已传递指定时间,则下一日将同时执行该作业。

    要在 2017 年 8 月 20 日执行该作业,请运行:

    ~]# at August 20 2017

    或者

    ~]# at 082017

    要从现在开始 5 天执行作业,请运行:

    ~]# now + 5 days
  2. 在显示 at> 提示符处,输入要执行的命令并按 Enter:

    ~]# at 15:00
    at> sh /usr/local/bin/my-script.sh
    at>

    对您要执行的每个命令重复此步骤。

    注意

    at> 提示符显示它将使用哪个 shell:

    warning: commands will be executed using /bin/sh

    at 实用程序使用用户的 SHELL 环境变量或用户的登录 shell 或 /bin/sh (以先到者为准)中设置的 shell。

  3. 在空行中按 Ctrl+D 完成指定作业。
注意

如果一组命令或脚本尝试显示标准输出的信息,则输出会通过电子邮件发送给用户。

查看待处理作业

要查看待处理作业列表,请使用 atq 命令:

~]# atq
26   Thu Feb 23 15:00:00 2017 a root
28   Thu Feb 24 17:30:00 2017 a root

每个作业都以以下格式在单独的行中列出:

job_number scheduled_date scheduled_hour job_class user_name

job_queue 列指定作业是 at 还是 批处理 作业。a 代表 at, b 表示 批处理

非 root 用户仅查看其自己的作业。root 用户查看所有用户的作业。

删除调度的作业

删除调度的作业:

  1. 使用 atq 命令列出待处理的作业:

    ~]# atq
    26   Thu Feb 23 15:00:00 2017 a root
    28   Thu Feb 24 17:30:00 2017 a root
  2. 查找您要删除的作业(按计划的时间和用户)。
  3. 运行 atrm 命令,按作业编号指定作业:

    ~]# atrm 26

24.3.2.1. 控制对 At 和 Batch 的访问

您可以限制特定用户对 atbatch 命令的访问。要做到这一点,根据这些规则将用户名放在 /etc/at.allow/etc/at.deny 中:

  • 两种访问控制文件都使用相同的格式:每行一个用户名。
  • 任一文件中均不允许使用空格。
  • 如果 at.allow 文件存在,则仅该文件中列出的用户可以在 或 批处理 中使用,并且 at.deny 文件将被忽略。
  • 如果 at.allow 不存在,则 at.deny 中列出的用户不得在 批处理 中使用。
  • root 用户不受访问控制文件的影响,并且始终可以执行 at批处理 命令。

如果修改了访问控制文件,则无需重新启动 at 守护进程(atd)。每次用户尝试执行 atbatch 命令时,都会读取访问控制文件。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.