24.3. at を使用した特定の時間にジョブを実行するスケジュールの設定
1 回限りのタスク (別名ジョブ) を指定した時間に 1 回実行するようスケジュール設定するときは、at ユーティリティーを使用します。
ユーザーは、at ユーティリティーを使用してat ジョブを指定します。このジョブはその後 atd サービスにより実行されます。
24.3.1. at ジョブの前提条件 リンクのコピーリンクがクリップボードにコピーされました!
at ジョブのスケジュール設定を行う前に、以下を行います。
at パッケージをインストールします。
yum install at
~]# yum install atCopy to Clipboard Copied! Toggle word wrap Toggle overflow atdサービスはインストール時に有効になっており、ブート時に自動的に開始するように設定されています。サービスを無効にしている場合は有効にしてください。systemctl enable atd.service
~]# systemctl enable atd.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow 現在のセッションで
atdサービスを開始します。systemctl start atd.service
~]# systemctl start atd.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow
24.3.2. at ジョブのスケジュール設定 リンクのコピーリンクがクリップボードにコピーされました!
ジョブは常に複数のユーザーにより実行されます。希望するユーザーとしてログインし、以下を実行します。
at time
~]# at timeCopy to Clipboard Copied! Toggle word wrap Toggle overflow time を時間指定に置き換えます。
時間の指定に関する詳細は、at(1) man ページと
/usr/share/doc/at/timespecファイルを参照してください。例24.1 at の時間指定
ジョブを 15:00 に実行するには、以下を実行します。
at 15:00
~]# at 15:00Copy to Clipboard Copied! Toggle word wrap Toggle overflow 指定した時間を過ぎると、そのジョブは翌日の同じ時間に実行されます。
ジョブを 2017 年 8 月 20 日に実行するには、以下を実行します。
at August 20 2017
~]# at August 20 2017Copy to Clipboard Copied! Toggle word wrap Toggle overflow または
at 082017
~]# at 082017Copy to Clipboard Copied! Toggle word wrap Toggle overflow ジョブを 5 日後に実行するには、以下を実行します。
now + 5 days
~]# now + 5 daysCopy to Clipboard Copied! Toggle word wrap Toggle overflow at>プロンプトが表示されたら、以下のコマンドを入力して実行し、Enter を押します。at 15:00
~]# at 15:00 at> sh /usr/local/bin/my-script.sh at>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 実行したいすべてのコマンドにこの手順を繰り返します。
注記at>プロンプトに、使用されるシェルが表示されます。warning: commands will be executed using /bin/sh
warning: commands will be executed using /bin/shCopy to Clipboard Copied! Toggle word wrap Toggle overflow at ユーティリティーは、ユーザーの SHELL 環境変数にあるシェルのセット、ユーザーのログインシェル、または
/bin/shの、いずれか最初に発見されたものを使用します。- 空の行で Ctrl+D キーを押し、ジョブの指定を完了します。
コマンドセットやスクリプトが標準出力に情報を表示しようとする場合、その出力はユーザーにメールで送信されます。
保留中のジョブの表示
保留中のジョブリストを表示するには、atq コマンドを使用します。
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_number scheduled_date scheduled_hour job_class user_name
job_queue カラムは、ジョブが at または batch のいずれのジョブであるかを指定します。a は at を表します。b は batch を表します。
非 root ユーザーが閲覧できるのは、自分のジョブのみです。root ユーザーは、すべてのユーザーのジョブを閲覧できます。
スケジュール設定したジョブの削除
スケジュール設定したジョブを削除するには、以下を行います。
atqコマンドを使用して、保留中のジョブをリスト表示します。atq
~]# atq 26 Thu Feb 23 15:00:00 2017 a root 28 Thu Feb 24 17:30:00 2017 a rootCopy to Clipboard Copied! Toggle word wrap Toggle overflow - スケジュールを設定した時間とユーザーを使用しえ、削除するジョブを検索します。
ジョブを番号で指定し、
atrmコマンドを実行します。atrm 26
~]# atrm 26Copy to Clipboard Copied! Toggle word wrap Toggle overflow
24.3.2.1. at と batch へのアクセスの制御 リンクのコピーリンクがクリップボードにコピーされました!
特定ユーザーによる at と batch コマンドへのアクセスを制限できます。次のルールに従って、ユーザー名を /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 のコマンドの実行を試みるたびに読み込まれます。