Solaris のシステム管理 (上級編)

第 18 章 システムタスクのスケジュール設定 (手順)

この章では、crontab コマンドおよび at コマンドを使用して、定型作業や 1 度限りのシステムタスクをスケジューリングする方法を説明します。さらに、cron.deny、 cron.allow、at.deny の各ファイルを使用して、これらのコマンドの使用を制御する方法も説明します。

この章で説明する手順は次のとおりです。

システムタスクを自動的に実行する方法

たくさんのシステムタスクを設定して、自動的に実行することができます。 これらのタスクの中には、定期的な実行が必要になる作業があります。また、夜間や週末などの就業時間外に 1 回だけ実行する作業もあります。

この節では、crontab と at という 2 つのコマンドについて概説します。これらのコマンドを使用すると、定型作業をスケジュールして、自動的に実行することができます。 crontab は、繰り返し実行するコマンドをスケジュールします。 at コマンドは、1 回だけ実行するタスクをスケジュールします。

次の表は、crontab コマンドと at コマンド、これらのコマンドの使用を制御できるファイルをまとめたものです。

表 18-1 システムタスクのスケジューリング用コマンド

コマンド 

スケジューリングの対象 

ファイルの格納場所 

制御ファイル 

crontab

一定間隔で実行する複数のシステムタスク 

/var/spool/cron/crontabs

/etc/cron.d/cron.allow

/etc/cron.d/cron.deny

at

1 つのシステムタスク 

/var/spool/cron/atjobs

/etc/cron.d/at.deny

Solaris 管理コンソールのスケジュールされたジョブツールを使用して、定型作業をスケジュールすることもできます。Solaris 管理コンソールの使い方と起動については、『Solaris のシステム管理 (基本編)』の「Solaris Management Console の操作 (手順)」を参照してください。

繰り返されるジョブのスケジューリング (crontab)

定型的なシステム管理タスクは、crontab コマンドを使用して、毎日、毎週、または毎月それぞれ 1 回ずつ実行するようにスケジュールできます。

毎日 1 回の crontab によるシステム管理作業には、次のようなものがあります。

毎週 1 回の crontab システム管理作業には、次のようなものがあります。

毎月 1 回の crontab システム管理作業には、次のようなものがあります。

上記に加えて、連絡事項の通知の転送やバックアップファイルの削除や、さらに他の定型的システム作業を実行するように crontab コマンドをスケジュールすることもできます。

crontab ジョブをスケジューリングする手順については、「crontab ファイルを作成または編集する方法」を参照してください。

1 つのジョブのスケジューリング (at)

特定の 1 つのジョブを後で実行するように at コマンドを使用してスケジュールできます。ジョブは 1 つのコマンドやスクリプトで構成されます。

crontab コマンドと同様に、at コマンドは定型作業の自動実行をスケジュールします。しかし、crontab ファイルとは異なり、at ファイルはそれぞれのタスクを 1 回実行して、その後はディレクトリから削除されてしまいます。したがって、at はそれぞれ単純なコマンドまたはスクリプトを実行して、後で調べることができるようにそれらの出力を別々のファイルに送るように使用するのが最も効果的です。

at ジョブの実行を指定するには、単にコマンド構文に従って at オプションで実行時刻を指定してください。at ジョブの実行を指定する方法についての詳細は、「at コマンドの説明」を参照してください。

at コマンドは、入力されたコマンドまたはスクリプトを、現在の環境変数のコピーと一緒に /var/spool/cron/atjobs ディレクトリに格納します。作成された at ジョブには、ファイル名として、at 待ち行列内での位置を指定する長い数値と .a 拡張子からなる、たとえば 793962000.a のような文字列が与えられます。

cron デーモンは、通常 15 分間隔で定期的に atrun プログラムを実行します。atrun プログラムは、スケジュールされた時間に at ジョブを実行します。cron デーモンが at ジョブを実行すると、at ジョブのファイルがatjobs ディレクトリから削除されます。

at ジョブをスケジューリングする手順については、「at ジョブを作成する方法」を参照してください。

繰り返されるシステムタスクのスケジューリング (cron)

以降の各項で、crontab ファイルをどのように作成、編集、表示、削除するか、さらに、それらのファイルの使用をどのように制御するかを説明します。

crontab ファイルの内容

cron デーモンは、各 crontab ファイル内にあるコマンドに従ってシステムタスクをスケジュールします。crontab ファイルには、それぞれ一定間隔で実行されるコマンドが 1 行に 1 つずつ入っています。各行の先頭は cron デーモンが各コマンドを実行する日時情報です。

たとえば、SunOS ソフトウェアのインストール時に root という名前の crontab ファイルが提供されますが、このファイルの内容は次のとおりです。


10 3 * * * /usr/sbin/logadm
15 3 * * 0 /usr/lib/fs/nfs/nfsfind
1 2 * * * [ -x /usr/sbin/rtc ] && /usr/sbin/rtc -c > /dev/null 2>&1
30 3 * * * [ -x /usr/lib/gss/gsscred_clean ] && /usr/lib/gss/gsscred_clean

最初の行は、毎日午前 3 時 10 分に logadm コマンドを実行します。2 行目は、毎週日曜日の午前 3 時 15 分に nfsfind スクリプトを実行します。3 行目は、毎日午前 2 時 10 分に夏時間をチェック (して必要に応じて修正) するスクリプトを実行します。RTC タイムゾーンも /etc/rtc_config ファイルもない場合、このエントリは何もしません。4 行目は、毎日午前 3 時 30 分に Generic Security Service テーブル /etc/gss/gsscred_db の重複エントリをチェック (重複エントリがある場合は削除) します。

crontab ファイル内のコマンド行の構文の詳細は、「crontab ファイルエントリの構文」を参照してください。

crontab ファイルは、/var/spool/cron/crontabs ディレクトリに保存されます。SunOS ソフトウェアのインストール時には、root 以外にもいくつかの crontab ファイルが提供されます (表 18-2 を参照してください)。

表 18-2 デフォルトの crontab ファイル

crontab ファイル

機能 

adm

アカウンティング 

lp

印刷 

root

一般的なシステム機能とファイルシステムの整理 

sys

パフォーマンス情報の収集 

uucp

一般的な uucp の整理

デフォルトの crontab ファイルの他に、ユーザーは crontab ファイルを作成してユーザー自身のシステムタスクをスケジュールできます。その他の crontab ファイルは、それらの中に作成されるユーザーのアカウントに基づいて、bob、mary、smith、jones などのように命名されます。

root または他のユーザーが所有する crontab ファイルに使用するには、スーパーユーザーの特権が必要です。

crontab ファイルの作成、編集、表示、削除の手順については、以降の節で説明します。

cron デーモンのスケジューリング

cron デーモンは crontab コマンドの自動スケジューリングを管理します。cron デーモンは、通常、15 分ごとに /var/spool/cron/crontab ディレクトリに crontab ファイルがあるかどうかをチェックします。cron デーモンは、新しい crontab ファイルがないか、既存の crontab が変更されていないかを確認し、いずれかがあった場合は、ファイル内のリストから実行時刻を読み取り、正しい時刻にコマンドを実行します。

ほとんど同様に、cron デーモンは /var/spool/cron/atjobs ディレクトリ内の at ファイルのスケジューリングを制御します。

crontab ファイルエントリの構文

crontab ファイルは、1 行に 1 つのコマンドが入った構成になっています。これらのコマンド行の最初の 5 つのフィールドには、コマンドが実行される時刻を指定し、それぞれスペースで区切ります。これら 5 つのフィールドを、次の表で説明します。

表 18-3 crontab 時刻フィールドの値

時刻フィールド 

値 

分 

0-59 

時 

0-23 

日 

1-31 

月 

1-12 

曜日 

0 - 6 (0 は日曜日) 

次に、crontab 時刻フィールドで特殊文字を使用する際のガイドラインを示します。

たとえば、次の crontab コマンドエントリの例は、毎月 1 日と 15 日の午後 4 時に、ユーザーのコンソールウィンドウに注意を促すメッセージを表示します。


0 16 1,15 * * echo Timesheets Due> /dev/console

crontab ファイル内の各コマンドは、長くても 1 行内に入れなければなりません。これは、crontab が余分なキャリッジリターンを認識しないからです。crontab のエントリとコマンドオプションの詳細は、crontab(1) のマニュアルページを参照してください。

crontab ファイルの作成と編集

crontab ファイルを作成するもっとも簡単な方法は、crontab -e コマンドを使用することです。このコマンドは、使用するシステム環境で使用できる環境変数 EDITOR で指定されたテキストエディタを起動します。この環境変数が設定されていない場合は、crontab はデフォルトのエディタ ed を使用します。あらかじめ、使い慣れたエディタを選択しておく必要があります。

次の例は、エディタが定義されたかどうかを確認する方法と、vi をデフォルトのエディタとして設定する方法を示しています。


$ which $EDITOR
$ 
$ EDITOR=vi
$ export EDITOR

crontab ファイルを作成すると、自動的に /var/spool/cron/crontabs ディレクトリ内に格納され、作成者のユーザー名で命名されます。スーパーユーザー特権があれば、他のユーザーや root の crontab ファイルを作成または編集できます。

crontab ファイルを作成または編集する方法

  1. (省略可能) root または他のユーザーが所有する crontab ファイルを作成または編集する場合は、スーパーユーザーになります。

  2. 次のように入力して、新しい crontab ファイルを作成するか、既存の crontab ファイルを編集します。


    $ crontab -e [username]

    username は、crontab ファイルを作成または編集するユーザーのアカウント名を指定します。他のユーザーの crontab ファイルを作成または編集するには、スーパーユーザーの権限が必要です。


    注意 - 注意 -

    誤ってオプションを指定しないで crontab コマンドを入力した場合は、使用しているエディタの中断文字を入力してください。この文字を入力すると、変更結果を保存せずに crontab コマンドを終了できます。この場合に変更結果を保存してファイルを終了すると、既存の crontab ファイルが空のファイルで上書きされます。


  3. コマンド行をファイルに追加します。

    「crontab ファイルエントリの構文」に記載されている構文に従ってください。crontab ファイルは /var/spool/cron/crontabs に格納されます。

  4. crontab ファイルの変更箇所を確認します。


    # crontab -l [username]

例 - crontab ファイルを作成または編集する

次の例は、他のユーザーのための crontab ファイルをどのように作成するかを示します。


# crontab -e jones

次の新しい crontab ファイルに追加されたコマンドは、毎週日曜日の午前 1 時にユーザーのホームディレクトリからすべてのログファイルを自動的に削除します。このコマンドエントリは出力先を変更しないので、出力先変更文字がコマンド行の *.log の後に追加されて、そのコマンドが正しく実行されるようにしています。


# This command helps clean up user accounts.
1 0 * * 0 rm /home/jones/*.log> /dev/null 2>&1

crontab ファイルを確認する方法

特定のユーザーの crontab ファイルがあるかどうかを確認するには、/var/spool/cron/crontabs ディレクトリで ls -l コマンドを使用します。たとえば、次の表示はユーザー smith と jones の crontab ファイルがあることを示しています。


$ ls -l /var/spool/cron/crontabs
-rw-r--r--  1 root     sys          190 Feb 26 16:23 adm
-rw-------  1 root     staff        225 Mar  1  9:19 jones
-rw-r--r--  1 root     root        1063 Feb 26 16:23 lp
-rw-r--r--  1 root     sys          441 Feb 26 16:25 root
-rw-------  1 root     staff         60 Mar  1  9:15 smith
-rw-r--r--  1 root     sys          308 Feb 26 16:23 sys

ユーザーの crontab ファイルの内容を確認するには、crontab -l コマンドを使用します。「crontab ファイルを表示する方法」を参照してください。

crontab ファイルの表示

crontab -l コマンドは、cat コマンドが他のファイルタイプの内容を表示するのとまったく同様に、使用しているユーザーの crontab ファイルの内容を表示します。このコマンドを使用するために、ディレクトリを (crontab ファイルが入っている) /var/spool/cron/crontabs に変更する必要はありません。

デフォルトでは、crontab -l コマンドは自分自身の crontab ファイルを表示します。他のユーザーの crontab ファイルは、スーパーユーザーでなければ表示できません。

crontab ファイルを表示する方法

  1. (省略可能) root または他のユーザーの crontab ファイルを表示する場合は、スーパーユーザーになります。

  2. 次のように入力して、crontab ファイルを表示します。


    $ crontab -l [username]

    username は、表示する crontab ファイルのユーザーのアカウント名を指定します。他のユーザーの crontab ファイルを表示するには、スーパーユーザーの権限が必要です。


    注意 - 注意 -

    誤ってオプションを指定しないで crontab コマンドを入力した場合は、使用しているエディタの中断文字を入力してください。この文字を入力すると、変更結果を保存せずに crontab コマンドを終了できます。この場合に変更結果を保存してファイルを終了すると、既存の crontab ファイルが空のファイルで上書きされます。


例 - crontab ファイルを表示する

次の例で、どのように crontab -l コマンドを使用してユーザのデフォルトの crontab ファイル、root のデフォルトの crontab ファイル、他のユーザーの crontab ファイルを表示するかを示します。


$ crontab -l
13 13 * * * chmod g+w /home1/documents/*.book> /dev/null 2>&1
$ suPassword:
# crontab -l
#ident  "@(#)root       1.19    98/07/06 SMI"   /* SVr4.0 1.1.3.1       */
#
# The root crontab should be used to perform accounting data collection.
#
# The rtc command is run to adjust the real time clock if and when
# daylight savings time changes.
#
10 3 * * * /usr/sbin/logadm
15 3 * * 0 /usr/lib/fs/nfs/nfsfind
1 2 * * * [ -x /usr/sbin/rtc ] && /usr/sbin/rtc -c > /dev/null 2>&1
30 3 * * * [ -x /usr/lib/gss/gsscred_clean ] && /usr/lib/gss/gsscred_clean
# crontab -l jones
13 13 * * * cp /home/jones/work_files /usr/backup/. > /dev/null 2>&1

crontab ファイルの削除

デフォルトでは、rm コマンドを使用して誤って crontab ファイルを削除してしまうことがないように、crontab ファイルは保護されています。crontab ファイルを削除する場合は、rm コマンドではなく crontab -r コマンドを使用してください。

デフォルトでは、crontab -r は、このコマンドを実行したユーザーの crontab を削除します。root またはその他のユーザーの crontab を削除するには、スーパーユーザーにならなければなりません。

このコマンドを使用するには、ディレクトリを (crontab ファイルが入っている) /var/spool/cron/crontabs に変更する必要はありません。

crontab ファイルを削除する方法

  1. (省略可能) root または他のユーザーの crontab ファイルを削除するには、スーパーユーザーになります。

  2. 次のように入力して、crontab ファイルを削除します。


    $ crontab -r [username]

    username は、削除する crontab ファイルのユーザーのアカウント名を指定します。他のユーザーの crontab ファイルを削除するには、スーパーユーザーの権限が必要です。


    注意 - 注意 -

    誤ってオプションを指定しないで crontab コマンドを入力した場合は、使用しているエディタの中断文字を入力してください。この文字を入力すると、変更結果を保存せずに crontab コマンドを終了できます。この場合に変更結果を保存してファイルを終了すると、既存の crontab ファイルが空のファイルで上書きされます。


  3. crontab ファイルが削除されたことを確認します。


    $ ls /var/spool/cron/crontabs
    

例 - crontab ファイルを削除する

次の例では、ユーザー smith が crontab -r コマンドを使用して自分の crontab ファイルを削除します。


$ ls /var/spool/cron/crontabs
adm     jones     lp     root    smith    sys     uucp
$ crontab -r
$ ls /var/spool/cron/crontabs
adm     jones     lp     root    sys    uucp

crontab コマンドの使用制御

cron.deny と cron.allow という /etc/cron.d ディレクトリ内の 2 つのファイルを使用して、crontab の使用を制御できます。これらのファイルによって、指定したユーザーだけが、それぞれ自分の crontab ファイルの作成、編集、表示、または削除などの crontab コマンドのタスクを実行できるようにします。

cron.deny および cron.allow ファイルは、それぞれ 1 行に 1 ユーザー名が入ったリストからなります。これらの使用制御用ファイルは、次のように連携して機能を果たします。

cron.deny と cron.allow ファイルを編集または作成するには、スーパーユーザーの権限が必要です。

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


$ cat /etc/cron.d/cron.deny
daemon
bin
smtp
nuucp
listen
nobody
noaccess

デフォルトの cron.deny ファイル内のユーザー名は、いずれも crontab コマンドを使用できません。このファイルを編集して、crontab コマンドの使用を拒否したいユーザー名を追加できます。

デフォルトでは、cron.allow ファイルは提供されません。つまり、Solaris ソフトウェアをインストールした直後は、すべてのユーザー (デフォルトのcron.deny ファイルにリストされているユーザーを除く) が crontab コマンドを使用できます。cron.allow ファイルを作成した場合、そのユーザーだけが crontab コマンドを使用できます。

crontab の使用を拒否する方法

  1. スーパーユーザーになります。

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


    daemon
    bin
    smtp
    nuucp
    listen
    nobody
    noaccess
    username1
    username2
    username3
    .
    .
    .
  3. /etc/cron.d/cron.deny ファイルを確認します。


    # cat /etc/cron.d/cron.deny
    

crontab の使用を特定のユーザーに限定する方法

  1. スーパーユーザーになります。

  2. /etc/cron.d/cron.allow ファイルを作成します。

  3. root ユーザー名を cron.allow ファイルに入力します。

    このファイルに root を追加しないと、スーパーユーザーの crontab コマンドの使用が拒否されます。

  4. 次のように、crontab コマンドの使用を許可するユーザー名を 1 行に 1 つずつ入力します。


    root
    username1
    username2
    username3
    .
    .
    .
    

例 - crontab の使用を特定のユーザーに限定する

次は、ユーザー visitor、jones、temp に crontab を使用させない cron.deny ファイルの例です。


$ cat /etc/cron.d/cron.denydaemon
bin
smtp
nuucp
listen
nobody
noaccess
jones
temp
visitor

次は cron.allow ファイルの例です。ユーザー smith、jones、lp および root だけが、crontab コマンドを使用できます。


$ cat /etc/cron.d/cron.allow
root
jones
lp
smith

crontab の使用制限を確認する方法

特定のユーザーが crontab を使用できるかどうかを確認するには、そのユーザーのアカウントでログインして crontab -l コマンドを使用します。


$ crontab -l

そのユーザーが crontab を使用できて、すでに crontab ファイルを作成している場合は、その crontab ファイルが表示されます。そのユーザーが crontab を使用できるが、crontab ファイルがない場合は、次のようなメッセージが表示されます。


crontab:crontab ファイルを開けません

このユーザーは、cron.allow (が存在する場合) に含まれているか、cron.deny に含まれていません。

ユーザーが crontab コマンドを使用できない場合は、上記の crontab ファイルの有無に関わらず、次のメッセージが表示されます。


crontab: cron を使用許可されていません

このメッセージは、ユーザーが cron.allow (が存在する場合) に含まれていないか、cron.deny ファイルに含まれていることを意味します。

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

以降の節では、at コマンドを使用して特定の時刻にジョブ (コマンドとスクリプト) をスケジュールする方法、これらのジョブを表示して削除する方法、at コマンドの使用を制御する方法について説明します。

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

at ジョブの実行を指定すると、at ジョブにジョブ識別番号と .a 拡張子が与えられ、それがジョブのファイル名になります。

at コマンドの説明

at ジョブの実行を指定するには、次の手順に従います。

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

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


    注 -

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


たとえば、次の at ジョブは、7 月 31 日の真夜中に smith のユーザーアカウントから core ファイルを削除します。


$ 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 2001

at コマンドの使用制御

特定のユーザーだけがそれぞれの 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 ジョブを作成する方法

  1. at ユーティリティを起動して、ジョブを実行したい時間を指定します。


    $ at [-m] time [date] 

    -m

    ジョブ終了後にメールを送る 

    time

    ジョブをスケジュールしたい時刻の時単位の値。24 時間制を使用しない場合は、am または pm を追加する。使用できるキーワードは、 midnight、noon、now。 分単位の値の指定は省略可能

    date

    月または曜日の名前の最初の 3 英字以上、またはキーワード today または tomorrow

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

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

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

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

例 - at ジョブを作成する

次の例は、ユーザー jones が彼女のバックアップファイルを 7:30 pm に削除するように作成した at ジョブを示しています。彼女は、ジョブの終了後にメールメッセージを受け取れるように、-m オプションを使用しています。


$ at -m 1930
at> rm /home/jones/*.backup
at> Control-D を押す
job 897355800.a at Thu Jul  12 19:30:00 2001

jones は次のメールメッセージを受け取りました。このメッセージは 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 コマンドを使用します。このコマンドは、その使用者が作成した at ジョブに関する状態情報を表示します。


$ atq

at ジョブを確認する方法

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


$ atq
Rank	  Execution Date     Owner     Job         Queue   Job Name
  1st   Jul 12, 2001 19:30   jones  897355800.a     a     stdin
  2nd   Jul 14, 2001 23:45   jones  897543900.a     a     stdin
  3rd   Jul 17, 2001 04:00   jones  897732000.a     a     stdin

at ジョブを表示する方法

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


$ at -l [job-id]

-l job-id オプションで、状態を表示したいジョブの識別番号を指定します。

例 - at ジョブを表示する

次の例は、at -l コマンドからの出力を示しています。このコマンドは、特定のユーザーが依頼したすべてのジョブに関する状態を表示します。


$ at -l 
897543900.a	Sat Jul 14 23:45:00 2001
897355800.a	Thu Jul 12 19:30:00 2001
897732000.a	Tue Jul 17 04:00:00 2001

次の例は、at -l コマンドに 1 つのジョブを指定して表示された出力を示しています。


$ at -l 897732000.a
897732000.a		Tue Jul 17 04:00:00 2001 

at ジョブを削除する方法

  1. (省略可能) root または他のユーザーの at ジョブを削除する場合は、スーパーユーザーになります。

  2. 次のように入力して、at ジョブが実行される前に待ち行列から削除します。


    $ at -r [job-id]

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

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

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


    $ at -l [job-id]

例 - at ジョブを削除する

次の例では、ユーザーが 7 月 17 日の午前 4 時に実行されるようにスケジュールした at ジョブを削除しようとしています。まず、このユーザーは at 待ち行列を表示してそのジョブの識別番号を探します。次に、そのジョブを at 待ち行列から削除します。最後に、at 待ち行列をもう一度表示して上記のジョブが削除されていることを確認します。


$ at -l
897543900.a	Sat Jul 14 23:45:00 2001
897355800.a	Thu Jul 12 19:30:00 2001
897732000.a	Tue Jul 17 04:00:00 2001
$ at -r 897732000.a
$ at -l 897732000.a
at: 858142000.a: No such file or directory

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

  1. スーパーユーザーになります。

  2. /etc/cron.d/at.deny ファイルを開きます。at コマンドを使用させないようにするユーザー名を 1 行に 1 つずつ追加または削除します。


    daemon
    bin
    smtp
    nuucp
    listen
    nobody
    noaccess
    username1
    username2
    username3
    .
    .
    .

例 - at の使用を拒否する

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


$ cat at.deny
daemon
bin
smtp
nuucp
listen
nobody
noaccess
jones
smith

at の使用の拒否を確認する方法

特定のユーザー名が正しく /etc/cron.d/at.deny に追加されているかどうかを確認するには、そのユーザー名でログインして、at -l コマンドを使用します。そのユーザーが at コマンドを使用できない場合は、次のメッセージが表示されます。


# su smith
Password:
$ at -l
at: 使用許可されていません

同様に、そのユーザーが at ジョブの実行を依頼しようとした場合は、次のメッセージが表示されます。


$ at 2:30pm
at: 使用許可されていません

このメッセージによって、そのユーザーが at.deny ファイルに含まれていることが確認されます。

at コマンドを使用できる場合、at -l コマンドは何も返しません。