ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
Oracle Solaris の管理: 一般的なタスク Oracle Solaris 11 Information Library (日本語) |
1. Oracle Solaris のコマンドに関する情報の検索
4. Oracle Solarisシステムのブートとシャットダウン
5. Oracle Configuration Manager の操作
crontab コマンドの使用を特定のユーザーに限定する方法
16. システムコンソール、端末デバイス、および電源サービスの管理 (手順)
19. システムおよびソフトウェアのトラブルシューティング (手順)
以降の節では、at コマンドを使用して以下のタスクを実行する方法を説明します。
特定の時刻にジョブ (コマンドとスクリプト) の実行をスケジュールする
これらのジョブを表示および削除する
at コマンドの使用を制御する
デフォルトでは、ユーザーはそれぞれ自分の at ジョブファイルを作成、表示、または削除できます。root または他のユーザーの at ファイルにアクセスするには、スーパーユーザーの権限が必要です。
at ジョブの実行を設定すると、ジョブ識別番号と .a 拡張子が与えられます。これがジョブのファイル名および待ち行列番号になります。
at ジョブファイルを書き込むには、以下の手順を実行します。
コマンド実行時刻を指定して at ユーティリティーを起動します。
あとで実行させるコマンドまたはスクリプトを入力します。
注 - このコマンドまたはスクリプトからの出力が重要な場合は、後で調べることができるように、出力内容を必ずファイルに書き込むようにしてください。
たとえば、次の at ジョブは、7 月 31 日の真夜中に smith ユーザーアカウントからコアファイルを削除します。
$ at 11:45pm July 31 at> rm /home/smith/*core* at> Press Control-d commands will be executed using /bin/csh job 933486300.a at Tue Jul 31 23:45:00 2004
特定のユーザーだけが自分の at ジョブに関する待ち行列情報を作成、削除、または表示できるように、at コマンドの使用を制御するファイルを設定できます。at コマンドの使用を制御するファイルは /etc/cron.d/at.deny です。ここにはユーザー名が列挙 (1 行に 1 人) されています。このファイルに列挙されているユーザーは、at コマンドを使用できません。
Solaris ソフトウェアのインストール時に作成される at.deny ファイルには、次のユーザー名が含まれます。
daemon bin smtp nuucp listen nobody noaccess
スーパーユーザーの特権があれば、at.deny ファイルを編集して、at の使用を制限したい他のユーザー名を追加できます。
$ at [-m] time [date]
ジョブ終了後にメールを送る
ジョブをスケジュールしたい時刻を指定する。24 時間制を使用しない場合は、am または pm を追加する。使用できるキーワードは、 midnight、noon、now。分単位の値の指定は省略可能
月または曜日の英語名の最初の 3 文字以上、またはキーワード today または tomorrow を指定する
各行の終わりで Return キーを押すことにより、複数のコマンドを入力できます。
作成できた at ジョブは待ち行列番号を割り当てられ、それがそのジョブのファイル名にもなります。この番号は at ユーティリティーの終了時に表示されます。
例 14-7 at ジョブを作成する
次の例は、ユーザー jones が自分のバックアップファイルを 7:30 pm に削除するように作成した at ジョブを示しています。彼女は、ジョブの終了後にメールメッセージを受け取れるように -m オプションを使用しています。
$ at -m 1930 at> rm /home/jones/*.backup at> Press Control-D job 897355800.a at Thu Jul 12 19:30:00 2004
彼女は次のメールメッセージを受け取りました。このメッセージは at ジョブが終了したことを確認しています。
Your “at” job “rm /home/jones/*.backup” completed.
次の例は、jones が土曜の午前 4 時に大規模な at ジョブをスケジュールする方法を示しています。ジョブの出力先は big.file という名前のファイルです。
$ at 4 am Saturday at> sort -r /usr/dict/words > /export/home/jones/big.file
$ atq
このコマンドは、その使用者が作成した at ジョブに関する状態情報を表示します。
$ atq Rank Execution Date Owner Job Queue Job Name 1st Jul 12, 2004 19:30 jones 897355800.a a stdin 2nd Jul 14, 2004 23:45 jones 897543900.a a stdin 3rd Jul 17, 2004 04:00 jones 897732000.a a stdin
$ at -l [job-id]
-l job-id オプションで、状態を表示したいジョブの識別番号を指定します。
例 14-8 at ジョブを表示する
次の例は、at -l コマンドからの出力を示しています。このコマンドは、特定のユーザーが実行を依頼したすべてのジョブの状態に関する情報を表示します。
$ at -l 897543900.a Sat Jul 14 23:45:00 2004 897355800.a Thu Jul 12 19:30:00 2004 897732000.a Tue Jul 17 04:00:00 2004
次の例は、at -l コマンドに 1 つのジョブを指定して表示された出力を示しています。
$ at -l 897732000.a 897732000.a Tue Jul 17 04:00:00 2004
始める前に
root または他のユーザーに属する at ジョブを削除するには、root ユーザーになります。役割には、認証と特権コマンドが含まれます。
自分の at ジョブを削除する場合は、root になる必要はありません。
# at -r [job-id]
-r job-id オプションで、削除したいジョブの識別番号を指定します。
at -l コマンドは、at 待ち行列に残っているジョブを表示します。識別番号を指定したジョブは、このリストに表示されないはずです。
$ at -l [job-id]
例 14-9 at ジョブを削除する
次の例では、ユーザーが 7 月 17 日の午前 4 時に実行されるようにスケジュールした at ジョブを削除しようとしています。まず、このユーザーは at 待ち行列を表示してそのジョブの識別番号を探します。次に、そのジョブを at 待ち行列から削除します。最後に、at 待ち行列をもう一度表示して上記のジョブが削除されていることを確認します。
$ at -l 897543900.a Sat Jul 14 23:45:00 2003 897355800.a Thu Jul 12 19:30:00 2003 897732000.a Tue Jul 17 04:00:00 2003 $ at -r 897732000.a $ at -l 897732000.a at: 858142000.a: No such file or directory
daemon bin smtp nuucp listen nobody noaccess username1 username2 username3 . . .
例 14-10 at の使用を拒否する
次の例は、ユーザー smith と jones が at コマンドを使用できないように編集された at.deny ファイルです。
$ cat at.deny daemon bin smtp nuucp listen nobody noaccess jones smith
# su smith Password: # at -l at: you are not authorized to use at. Sorry.
同様に、そのユーザーが at ジョブの実行を依頼しようとした場合は、次のメッセージが表示されます。
# at 2:30pm at: you are not authorized to use at. Sorry.
このメッセージによって、そのユーザーが at.deny ファイルに含まれていることが確認されます。
at コマンドを使用できる場合、at -l コマンドは何も返しません。