24.3. at を使用した特定の時間にジョブを実行するスケジュールの設定

1 回限りのタスク (別名ジョブ) を指定した時間に 1 回実行するようスケジュール設定するときは、at ユーティリティーを使用します。

ユーザーは、at ユーティリティーを使用してat ジョブを指定します。このジョブはその後 atd サービスにより実行されます。

24.3.1. at ジョブの前提条件

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) man ページと /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> プロンプトに、使用されるシェルが表示されます。

    warning: commands will be executed using /bin/sh

    at ユーティリティーは、ユーザーの SHELL 環境変数にあるシェルのセット、ユーザーのログインシェル、または /bin/sh の、いずれか最初に発見されたものを使用します。

  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 または batch のいずれのジョブであるかを指定します。aat を、bbatch を表します。

非 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 に入力してください。

  • 両方のアクセス制御ファイルは、同じフォーマットを使用します。ユーザー名は、各行に 1 人ずつです。
  • いずれのファイルでも、空白は許可されません。
  • at.allow ファイルが存在する場合は、ファイルに記載されているユーザーのみが at または batch を使用でき、at.deny ファイルは無視されます。
  • at.allow がない場合は、at.deny に記載されているユーザーは at または batch を使用できません。
  • root ユーザーはアクセス制御ファイルの影響を受けず、常に at コマンドおよび batch コマンドを実行できます。

アクセス制御ファイルを変更した場合でも、at デーモン (atd) を再起動する必要はありません。アクセス制御ファイルは、ユーザーが at または batch のコマンドの実行を試みるたびに読み込まれます。


このページには機械翻訳が使用されている場合があります (詳細はこちら)。