CRONTAB(5) CRONTAB(5) 名前 crontab - cron を駆動するための一覧表 説明 crontab ファイルには cron(8) デーモンへの命令が「この日付のこの時刻にこ のコマンドを使用せよ」という形式で書き込まれている。ユーザはそれぞれ 自 分 用 の crontab を持っており、各 crontab に与えられたコマンドは、その crontab を所有しているユーザの権限で実行されることになる。 UUCP や News は た いていそれぞれの crontab を持っているので、 cron コマンドの一部で su(1) を明示的に実行する必要性はない。 空行および行頭のスペース・タブは無視される。行先頭の空白以外の文字が # の 行はコメント行であり、無視される。 cron コマンドとしての行に注釈とし てのコメントを入れることはできない。それらはコマンドの一部とみなされ て し まう。同様に、環境変数を設定している行にコメントを入れることはできな い。 crontab の動作行は、環境変数の設定か cronコマンドのいずれかである。環境 変数の設定は以下の形式をとる: name = value た だし、等号 (=) 両側のスペースはなくても良い。 value 内部の (先頭では ない) スペース文字は、値の一部として name に与えられる。 value 文字列は 引 用符で括ってもよい (シングルクォートでもダブルクォートでも良いが、揃 っている必要がある)。こうすれば先頭や末尾の空白を値に渡すことができる。 いくつかの環境変数は cron(8) デーモンによって自動的に設定される。 SHELL は /bin/sh に設定され、 LOGNAME とHOME は /etc/passwd の crontab の所有 者 の行から設定される。 HOME と SHELL は crontab 内部の記述で変更できる 。 LOGNAME は変更できない。 (さらに注意:LOGNAME 変数は、 BSD システムではまれに USER と称される... これらのシステム上では USER も設定される。) LOGNAME, HOME, SHELL の他に 、 cron(8) は「この」crontab を実行した結果メールを送る必要が生じた場合 、 MAILTO も参照する。もしMAILTOが定義されていたら (およびそれが空でな かったら) その名前のユーザーにメールを送る。 MAILTO が定義されていて も 値 が設定されていなければ (MAILTO="")、メールは送信されない。 MAILTO が 定義もされていなければ、メールは crontab の所有者に送られる。 cron をイ ン ストールする際に、メーラーを /usr/lib/sendmail ではなく /bin/mail に していると、このオプションは便利である。 /bin/mailはエイリアシングを 行 わないし、 UUCP はたいていこのメールを読まないからである。 cron コマンドの形式は V7 標準そのものであるが、多くの上位互換な拡張があ る。各行には 5 つの時刻・日付フィールドがあり、 (システムの crontab フ ァ イルの場合) ユーザー名が続き、さらにコマンドが続く。分・時・月が現在 時刻と一致し、かつ、 2 つの日フィールド (月内日または曜日) のいずれかが 現 在時刻と一致すれば (以下の「注意」を参照)、コマンドが cron(8) によっ て実行される。 cron(8) は毎分に一度 cron エントリを調べる。時間と日付フ ィールドは以下の通り: フィールド 指定可能な値 ---------- -------------- 分 0-59 時 0-23 月内日 1-31 月 1-12 (もしくは名前。下記を参照) 曜日 0-7 (0 と 7 は日曜日。もしくは名前) フィールドにはアスタリスク (*) も指定できる。これはあらゆるフィールドで ‘‘first-last’’ という意味になる。 数値の範囲も指定できる。範囲は二つの数をハイフンでつなげる。指定数値 も 領域に含まれる。例えば「時」に 8-11 を指定すると、 8時, 9時, 10時, 11時 に実行することになる。 リストもできる。リストはコンマで区切られた数値 (または範囲) のセット で ある。例:‘‘1,2,5,9’’, ‘‘0-4,8-12’’ 間隔値を範囲とともに指定することもできる。範囲の後に ‘‘/<number>’’ と指 定すると、範囲内で指定数値ずつ飛ばすことになる。例えば「時」フィール ド に ‘‘0-23/2’’ と指定すると、コマンドは 2 時間おきに実行される (V7 標準 の別形式で書けば ‘‘0,2,4,6,8,10,12,14,16,18,20,22’’) 間隔はアスタリスク の後にも指定できる。「2 時間おき」といいたければ ‘‘*/2’’とする。 「 月」フィールドや「曜日」フィールドには名前を使用することもできる。そ の日または月の最初の3文字を用いる (大文字小文字は問わない)。範囲やリ ス トを名前に対して用いることはできない。 「 第 6」フィールド (行の残りの部分) には実行されるコマンドを指定する。 その行のコマンド部 (改行文字または % 文字まで) が /bin/sh (または そ の crontab ファイルの SHELL 環境変数で指定されたシェル) によって実行される 。コマンド中にパーセント記号 (%) がバックスラッシュ (\) によってエス ケ ープされずに置かれていると、改行文字に置き換えられ、最初に現れた % 以降 の全てのデータは標準入力としてコマンドに送られる。 注意: コマンド実行の日は 2 つのフィールドで指定できる -- 月内日および 曜 日 である。もし両方のフィールドが制限指定 (* 以外) であると、いずれかの フィールドが現在時刻と合った時にコマンドが実行される。例えば、 ‘‘30 4 1,15 * 5’’ とすると、毎月 1 日と 15 日および毎週金曜日の午前 4:30 にコマンドが実行 される。 CRON ファイルの例 # (/etc/passwd の指定に関らず) コマンド実行に /bin/sh を使用する。 SHELL=/bin/sh # (この crontab の所有者に関らず) あらゆる出力を ‘paul’ にメールする。 MAILTO=paul # # 毎日、日付変更の 5 分後に実行する 5 0 * * * $HOME/bin/daily.job >> $HOME/tmp/out 2>&1 # 毎月初日の 2:15pm に実行する -- 出力は paul にメールされる 15 14 1 * * $HOME/bin/monthly # 平日の午後 10 時に実行してジョーを心配させる 0 22 * * 1-5 mail -s "午後10時だ" joe%ジョー、%%お前の子どもはどこだい?% 23 0-23/2 * * * echo "毎日 0,2,4..時 23 分に実行する" 5 4 * * sun echo "日曜 4 時 5 分に実行する" 関連項目 cron(8), crontab(1) 拡張 曜 日指定において、 0 も 7 も日曜日とみなされる。 BSD と ATT ではこのよ うにはなっていないようだ。 リストと範囲は同じフィールドに共存できる。 ATT や BSD の cron で は "1-3,7-9" は拒否されるだろう -- "1-3" または "7,8,9" のいずれかだけしか 指定できない。 範囲に「間隔値」を指定できる。すなわち "1-9/2" が "1,3,5,7,9" と同じ。 月または曜日を名前で指定できる。 環境変数を crontab の内部で設定できる。 BSD や ATT では、子プロセスに渡 される環境は基本的に /etc/rc のものである。 コ マ ンドの出力は crontab の所有者にメールされる (BSD ではこれを行わな い)。また crontab の所有者以外の人にもメールできる (SysV ではこれができ な い) 。さらにこの機能を無効にし、誰にもメールを送らないようにもできる (SysV ではこれもできない)。 著者 Paul Vixie <paul@vix.com> 4th Berkeley Distribution 24 January 1994 CRONTAB(5)