Oracle® Solaris 11.2 でのシステム情報、プロセス、およびパフォーマンスの管理

印刷ビューの終了

更新: 2014 年 9 月
 
 

1 つのシステムタスクのスケジューリング (at)

    以降のセクションでは、at コマンドを使用して次のタスクを実行する方法を説明します。

  • 特定の時間にジョブ (コマンドとスクリプト) の実行をスケジュールする

  • ジョブの表示および削除

  • at コマンドの使用制御

デフォルトでは、ユーザーはそれぞれ自分の at ジョブファイルを作成、表示、または削除できます。root または別のユーザーに属する at ファイルにアクセスするには、root 役割になる必要があります。

at ジョブファイルの送信

at ジョブを実行すると、ジョブ識別番号と .a 拡張子が割り当てられます。これがジョブのファイル名および待ち行列番号になります。

at ジョブファイルの送信の手順は次のとおりです。

  1. コマンド実行時間を指定して at ユーティリティーを起動します。

  2. あとで実行させるコマンドまたはスクリプトを入力します。


    注 -  このコマンドまたはスクリプトからの出力が重要な場合は、後で調べることができるように、出力内容を必ずファイルに書き込むようにしてください。

たとえば、次の 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 ジョブを作成する方法

  1. at ユーティリティーを起動して、ジョブを実行する時間を指定します。
    $ at [-m] time [date] 
    -m

    ジョブの完了後に電子メールを送信することを指定する。

    time

    ジョブをスケジュールしたい時刻を指定する。24 時間制を使用しない場合は、am または pm を追加する。使用できるキーワードは、 midnightnoonnow。分単位の値の指定はオプション。

    date

    月または曜日の英語名の最初の 3 文字以上、またはキーワード today または tomorrow を指定する

  2. at プロンプトに、実行したいコマンドまたはスクリプトを 1 行に 1 つずつ入力します。

    各行の終わりで Return キーを押すことにより、複数のコマンドを入力できます。

  3. Control-D キーを押して at ユーティリティーを終了し、at ジョブを保存します。

    at ジョブは待ち行列番号を割り当てられ、それがそのジョブのファイル名にもなります。この番号は at ユーティリティーの終了時に表示されます。

使用例 4-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

at 待ち行列を表示する

at 待ち行列で実行を待っているジョブを確認するには、atq コマンドを使用します。

$ atq

このコマンドは、その使用者が作成した at ジョブに関するステータス情報を表示します。

at ジョブを確認する

at ジョブが作成できたかどうかを確認するには、atq コマンドを使用します。次の例の atq コマンドは、jonesat ジョブが待ち行列に入っていることを確認しています。

$ 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 ジョブを表示する

自分の at ジョブの実行時間に関する情報を表示するには、at -l コマンドを使用します。

$ at -l [job-id]

ここで、–l job-id は、ステータスを表示する特定のジョブのオプションの ID 番号です。ID がないと、コマンドによってユーザーが実行したすべてのジョブのステータスが表示されます。

使用例 4-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

at ジョブを削除する方法

始める前に

root または別のユーザーに属する at ジョブを削除するには、root 役割になります。Oracle Solaris 11.2 でのユーザーとプロセスのセキュリティー保護 の割り当てられている管理権利の使用を参照してください。

自分の at ジョブを削除する場合は、root 役割になる必要はありません。

  1. 次のように入力して、at ジョブが実行される前に待ち行列から削除します。
    # at -r [job-id]

    –r job-id オプションで、削除したいジョブの識別番号を指定します。

  2. at -l (または atq) コマンドを使用して、at ジョブが削除されていることを確認します。

    at -l コマンドは、at 待ち行列に残っているジョブを表示します。識別番号を指定したジョブは、このリストに表示されないはずです。

    $ at -l [job-id]
使用例 4-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

at コマンドの使用制御

特定のユーザーだけが自分の at ジョブに関する待ち行列情報を作成、削除、または表示できるように、at コマンドの使用を制御するファイルを設定できます。at コマンドの使用を制御するファイルは /etc/cron.d/at.deny で、ここにはユーザー名が列挙 (1 行に 1 人) されています。このファイルに列挙されているユーザーは、at コマンドを使用できません。

Oracle Solaris ソフトウェアのインストール時に作成される at.deny ファイルには、次のユーザー名が含まれます。

daemon
bin
smtp
nuucp
listen
nobody
noaccess

スーパーユーザーの特権があれば、at.deny ファイルを編集して、at コマンドの使用を制限したいほかのユーザー名を追加できます。

at コマンドの使用を拒否する

root で、/etc/cron.d/at.deny ファイルを編集して、at コマンドを使用させないようにするユーザー名を 1 行に 1 つずつ追加します。

daemon
bin
smtp
nuucp
listen
nobody
noaccess
username1
username2
username3
.
.
.
使用例 4-10  at の使用を拒否する

次の例は、ユーザー smithjonesat コマンドを使用できないように編集された at.deny ファイルです。

$ cat at.deny
daemon
bin
smtp
nuucp
listen
nobody
noaccess
jones
smith
at コマンドの使用制御が拒否されていることを確認する

ユーザー名が /etc/cron.d/at.deny ファイルに正しく追加されたことを確認するには、ユーザーとしてログイン中に at -l コマンドを使用します。たとえば、ログインしているユーザー smith は、at コマンドにアクセスできず、次のメッセージが表示されます。

# 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 コマンドは何も返しません。