cron ジョブを実行依頼、編集、リスト、または取り外します。
crontab [ -e [UserName] | -l [UserName] | -r [UserName] | -v [UserName] | File ]
crontab コマンドは、cron ジョブを実行依頼、編集、リスト、または取り外します。 cron ジョブは、 定期的にスケジュールされたインターバルで、cron デーモンによって実行されるコマンドです。 cron ジョブを実行依頼するには、-e フラグを付けて crontab コマンドを指定します。 crontab コマンドは、編集セッションを起動し、 ユーザーはこのセッションを使用して crontab ファイルを作成できます。ユーザーは、このファイル内のそれぞれの cron ジョブごとに項目を作成します。各項目は、cron デーモンが受け入れることができる形式でなければなりません。 項目の作成については、crontab ファイル項目形式 を参照してください。
項目の作成を完了し、ファイルを終了すると、crontab コマンドが、 そのファイルをコピーして /var/spool/cron/crontabs ディレクトリーに入れ、さらに、 ご使用の現行ユーザー名用に名前をつけたファイルに入れます。ユーザーの名前をつけたファイルがすでに crontabs ディレクトリーにある場合、そのファイルは crontab コマンドによって上書きされます。
代わりに、File パラメーターを指定して crontab ファイルを作成できます。ファイルが存在する場合、そのファイルは、cron デーモンが期待している形式でなければなりません。 ファイルが存在しない場合、crontab コマンドはエディターを起動します。 EDITOR 環境変数がある場合、コマンドは、その環境変数が指定するエディターを起動します。そうでない場合、crontab コマンドは vi エディターを使用します。
crontab ファイルの内容をリストするには、-l フラグを付けて crontab コマンドを指定します。既存ファイルを取り外すには、 -r フラグを使用します。
crontab ファイルの所有者または root ユーザーがオプションの UserName パラメーターを使用して、指定したユーザーの cron ジョブの状況を編集、リスト、除去、 または検査することができます。 UserName が無効な場合、エラー・メッセージが生成され、プログラムは終了します。
オプションの UserName パラメーターが指定されない場合、 crontab フラグは、root ユーザーおよび現行ユーザーが使用できます。
root ユーザーまたは crontab ファイルの所有者のみが -e、-l、-r、 および -v フラグの後に UserName を使用して、 指定したユーザーの crontab ファイルを編集、リスト、取り外し、および検査できます。
cron デーモンは、crontab ファイルの項目にしたがってコマンドを実行します。ユーザーが cron ジョブの出力を標準出力またはエラーにリダイレクトしないかぎり、 cron デーモンは、すべてのコマンド出力またはエラーをユーザーにメールします。 crontab ファイル内に cron ジョブを誤って指定した場合、 cron デーモンはそのジョブを実行しません。
cron デーモンが crontab ファイルを検査するのは、 cron デーモンが初期設定されたときだけです。 crontab コマンドを使用して crontab ファイルを変更すると、 変更を示すメッセージが cron デーモンに送信されます。これによって、 定期的にスケジュールされたインターバルで、 新規ファイルまたは変更ファイルの有無を検査するオーバーヘッドをなくすことができます。
/var/adm/cron/cron.allow ファイル、 および /var/adm/cron/cron.deny ファイルによって、 どのユーザーが crontab コマンドを使用できるかを制御できます。 これらのファイルを作成、編集、または削除できるのは root ユーザーです。これらのファイルにある項目は、ユーザーのログイン名で、1 行に名前が 1 つ入っています。ユーザーのログイン ID が複数のログイン名に関連付けられている場合、crontab コマンドは、 実際に使用しているログイン名に関係なく、/etc/passwd ファイルにある最初のログイン名を使用します。また、cron ジョブをユーザーが開始することを許可するには、 chuser コマンドを使用して、/etc/security/user ファイルの中のデーモンの属性を TRUE に設定する必要があります。
以下に、cron.allow ファイルの例を示します。
root nick dee sarah
cron.allow ファイルがある場合、そのファイルにログイン名があるユーザーだけが crontab コマンドを使用できます。 cron.allow ファイルがある場合、root ユーザーのログ名は、 このファイルの中になければなりません。システム管理者は、 ユーザーのログイン名を cron.deny ファイルにリストすることによって、 ユーザーが crontab コマンドを使用するのを明示的に停止できます。 cron.deny ファイルだけがある場合、そのファイルに名前がないユーザーであればだれでも、crontab コマンドを使用できます。
以下のいずれかが当てはまる場合、ユーザーは crontab コマンドを使用できません。
cron.allow ファイルも cron.deny ファイルも存在しない場合、root ユーザー権限を持ったユーザーだけが crontab コマンドを使用してジョブを実行依頼できます。
crontab ファイルには、各 cron ジョブごとに項目が入っています。項目は、改行文字で分離されます。それぞれの crontab ファイル項目には、 スペースまたはタブで分離された 6 つのフィールドが次の形式で入っています。
minute hour day_of_month month weekday command
これらのフィールドは、以下の値を受け入れます。
| minute | 0 から 59 |
| hour | 0 から 23 |
| day_of_month | 1 から 31 |
| month | 1 から 12 |
| weekday | 0 から 6 (日曜日から土曜日を表す) |
| command | シェル・コマンド |
各フィールドに値を指定します。command フィールドを除き、これらのフィールドには、以下の値を入れることができます。
注: 円記号 (\) の後に来る文字 (% を含む)はすべてリテラルとして扱われます。日の指定は、2 つのフィールド (月の何日目および曜日) を使用して行えます。 両方をエレメントのリストとして指定する場合は両方をつけます。例えば、次の項目では、0 0 1,15 * 1 commandコマンドを各月の第 1 日および第 15 日、および各月曜日に実行します。日を 1 つのフィールドだけで指定するには、 その他のフィールドには * を入れる必要があります。
cron デーモンは、選択された日時の 6 番目のフィールドに指定されたコマンドを実行します。 6 番目のフィールドに % (パーセント記号) を入れた場合、% 記号をエスケープ (\%) しないかぎり、 cron デーモンは、% 記号の前にあるすべてのものをコマンド呼び出しとして扱い、 % 記号の後にあるものを標準入力で使用できるようにします。ブランク行、および、行の最初の非ブランク文字が番号記号 (#) である行は無視されます。コマンドに対する引数に円記号 (\) がある場合は、 円記号の前にもうひとつ円記号を付ける必要があります。
cron デーモンは、 ご使用の HOME ディレクトリーにあるサブシェルを開始します。ユーザーがログインしていないときにコマンドが実行されるようにスケジュールし、さらに、ご使用の .profile ファイルにあるコマンドが実行されるようにしたい場合は、 コマンドが明示的にご使用の .profile ファイルを読み取る必要があります。
cron デーモンは、各シェルが使用するデフォルトの環境を提供し、 HOME、LOGNAME、SHELL (=/usr/bin/sh )、 および PATH (=/usr/bin) を定義します。
監査イベント: 監査サブシステムが正しく構成されて使用可能になっている場合、crontab コマンドは、 コマンドが実行されるたびに以下の監査レコード (イベント) を生成します。
| イベント | 情報 |
|---|---|
| CRON_JobRemove | cron ジョブを、どのユーザーがいつ取り外したかをリストします。 |
| CRON_JobAdd | cron ジョブを、どのユーザーがいつ追加したかをリストします。 |
このコマンドは、以下の終了値を戻します。
| 0 | 正常終了。 |
| >0 | エラーが発生しました。 |
crontab mycronjobsファイルは次のようにコピーされます。
/var/spool/cron/crontabs/<username>ここで、<username > は現行のユーザー名です。
0 * * * * echo The hour is `date` . >/dev/console
30 6 * * 1,3,5 /usr/bin/calendar
30 6 * * * /usr/bin/calendar
0 0 * 8 * /u/harry/bin/maintenance
0 16 * 12 5 /usr/sbin/wall%HAPPY HOLIDAY!%Remember to turn in your time card.% (パーセント記号) の後に続くテキストは、 次に示すように、wall コマンドに対する標準入力を定義します。
HAPPY HOLIDAY! Remember to turn in your time card.