$ at[オプション]日時 |
指定した日時にジョブを実行するには、at コマンドが使用できます。しかし、定期的にジョブを実行するには、cron のほうがより一般的に使用されています。at コマンドを使用するには、atd デーモンが動作している必要があります。通常は自動的に起動されていますが、サービス管理ツールの turboservice などで確認してください。また、ジョブの実行結果が標準出力される場合は、その内容が実行したユーザー宛にメールで送信されます。その際、mail コマンドが使用されますので、sendmail や Postfix など MTA のパッケージもインストールされている必要があります。メールは、mail コマンドなどで確認できます。
at コマンドを実行すると、at> とプロンプトが表示されますので、指定時刻に実行したいコマンドを入力します。入力が完了したら、[Ctrl]+[D]キーを押し終了します。
日時は様々なフォーマットで指定可能です。ここでは、そのうちのいくつかを紹介します。日時指定のより詳細な情報は man ページを参照してください。
時刻は HH:MM(HH は時、MM は分)という形式で指定できます。すでにその時刻を過ぎているときには次の日に実行されます。日付の指定は、 MMDDYY、MM/DD/YY、DD.MM.YY(MM は月、DD は日、YY は年号の下2桁)などの形式で指定可能です。日付は、時刻の後に指定する必要があります。
# at 16:00 warning: commands will be executed using (in order) a) $SHELL b) login shell c) /bin/sh at> grep "authentication failure" /var/log/messages at>([Ctrl]+[D]キーを押す) job 7 at 2003-02-17 16:05 # |
実行結果が標準出力される場合は、その内容のメールが実行したユーザー宛に送信されます。
ジョブをファイルに記述し、-f オプションでそのファイルを指定することも可能です。例えば、以下のように記述した at_test というファイルを作成します。実行したいコマンドが複数ある場合は、次の行に続けて入力します。
grep "authentication failure" /var/log/messages |
作成した at_test ファイルを -f オプションで指定して at コマンドを実行します。
# at 04:00 -f at_test |
その他の代表的なオプションを以下に示します。
予約したジョブを表示するには、atq コマンドを使用します。at コマンドに -l オプションを指定した場合も同じ働きをします。
$ atq |
先頭の数字は、予約されたジョブのキュー番号です。予約されたジョブを削除するには、atrm コマンドにこのキュー番号を渡します。at コマンドに -d オプションを指定した場合も同じ働きをします。
$ atrm 3 |
なお、一般ユーザーの at コマンドの使用を /etc/at.allow と /etc/at.deny で制限することが可能です。/etc/at.allow が存在すれば、このファイルで指定されたユーザーのみ at コマンドを使用できます。/etc/at.allow が存在しなければ、/etc/at.deny をチェックし、このファイルに指定されていない全てのユーザーが at コマンドを使用できます。つまり、空の /etc/at.deny が存在すれば、全てのユーザーが使用することができ、この設定がデフォルトです。もしどちらのファイルも存在しなければ、root のみ at コマンドを使用することができます。