28.3. atコマンドとbatchコマンド

コマンドcronとanacronは繰り返し行われるタスクをスケジュールするために使用されますが、atコマンドは、指定した時刻に1度だけ行われるタスクをスケジュールするために使用されます。batchコマンドは、システムの平均負荷が0.8を下回ったときに実行される1度限りのタスクをスケジュールするために使用されます。

atbatchを使用するには、at RPMパッケージをインストールし、atdサービスを実行しておく必要があります。このパッケージがインストールされていることを確認するには、rpm -q atコマンドを使用してください。このパッケージがインストールされていることを確認するには、/sbin/service atd statusコマンドを使用してください。

28.3.1. Atジョブの設定

指定した時刻に1度だけ実行されるジョブのスケジュールを設定するには、コマンドat timeを入力します。ここで、timeにはこのコマンドを実行する時刻を指定します。

引数timeは次のいずれかを指定できます。

最初に時刻を指定して、その次にオプションの日付を指定します。日付と時刻の書式については /usr/share/doc/at-<version>/timespec テキストファイルを参照してください。

atコマンドに引数timeを付けて実行すると、at>プロンプトが表示されます。実行するコマンドを入力し、[Enter]キーを押して、Ctrl-Dキーを押します。複数のコマンドを指定する場合は、コマンドを1つ入力するたびに[Enter]キーを押します。コマンドをすべて入力したら、[Enter]キーを押して、空白行を挿入し、Ctrl-Dキーを押します。また、プロンプトでシェルスクリプトを入力し、スクリプトで1行ごとに[Enter]キーを押し、空白行でCtrl-Dを押して終了することもできます。スクリプトを入力した場合、ユーザーのSHELL環境で設定されたシェル、ユーザーのログインシェル、または/bin/shのうち、最初に見つかった シェルが使用されます。

標準出力に情報を表示するコマンドやスクリプトを入力した場合、この出力はユーザーに電子メールで送信されます。

保留ジョブを表示するには、atqコマンドを使用します。詳細については項28.3.3を参照してください。

atコマンドの使用法を制限することができます。詳細については項28.3.5を参照してください。

28.3.2. batchジョブの設定

平均負荷が0.8を下回ったときに、1度きりのタスクを実行するには、batchコマンドを使用します。

batchコマンドを実行すると、at>プロンプトが表示されます。実行するコマンドを入力し、[Enter]キーを押して、Ctrl-Dキーを押します。複数のコマンドを指定する場合は、コマンドを1つ入力するたびに[Enter]キーを押します。コマンドをすべて入力したら、[Enter]キーを押して、空白行を挿入し、Ctrl-Dキーを押します。また、プロンプトでシェルスクリプトを入力し、スクリプトで1行ごとに[Enter]キーを押し、空白行でCtrl-Dを押して終了することもできます。スクリプトを入力した場合、ユーザーのSHELL環境で設定されたシェル、ユーザーのログインシェル、または/bin/shのうち、最初に見つかった シェルが使用されます。平均負荷が0.8を下回ると同時に、コマンドのセットやスクリプトが実行されます。

標準出力に情報を表示するコマンドやスクリプトを入力した場合、この出力はユーザーに電子メールで送信されます。

保留ジョブを表示するには、atqコマンドを使用します。詳細については項28.3.3を参照してください。

batchコマンドの使用法を制限することができます。詳細については項28.3.5を参照してください。

28.3.3. 保留ジョブの表示

保留されているatジョブやbatchジョブを表示するには、atqコマンドを使用します。この結果、保留になっているジョブが1行に1つずつ表示されます。各行は、ジョブ番号、日付、時間、ジョブのクラス、ユーザー名の形式をとります。ユーザーは自分のジョブしか見ることができません。ただし、rootユーザーがatqコマンドを実行した場合は、すべてのユーザーのすべてのジョブが表示されます。

28.3.4. その他のコマンドラインオプション

atbatchには、その他にも次のようなコマンドラインオプションがあります。

オプション説明
-fコマンドやシェルスクリプトはプロンプトで指定するのではなく、ファイルから読み込む
-mジョブが完了したら、ユーザに電子メールを送信する
-vジョブが実行される時刻を表示する

表 28-1. atbatchのコマンドラインオプション

28.3.5. atとbatchへのアクセスの制御

/etc/at.allowファイルや/etc/at.denyファイルは、atコマンドやbatchコマンドへのアクセスを制限するために使用されます。どちらのアクセスコントロールファイルも、1行にユーザー名を1つという形式で記述されています。また、どちらのファイルでも空白文字は使えません。これらのアクセスコントロールファイルを変更したときに、atデーモン(atd)を再起動する必要はありません。アクセスコントロールファイルはユーザーがatコマンドやbatchコマンドを実行しようとするたびに読み込まれます。

アクセスコントロールファイルにリストされているユーザー名に関係なく、rootユーザーはいつでもatコマンドやbatchコマンドを使用できます。

ファイルat.allowが存在する場合、このファイルに記載されているユーザーだけがatコマンドやbatchコマンドを使用することができます。このとき、at.denyファイルは無視されます。

at.allowが存在しない場合、at.denyに記載されているユーザーはすべて、atコマンドやbatchコマンドを使用できません。

28.3.6. サービスの起動と停止

atサービスを開始するには、/sbin/service atd startコマンドを使用します。サービスを停止するには、/sbin/service atd stopコマンドを使用します。サービスの起動はブート時に行うことをお勧めします。ブート時に自動的にcronサービスを起動する方法については、第14章を参照してください。