cron(8) 予定されたコマンドを実行するデーモン(Vixie Cron)

書式

cron [-f]

説明

cron は、マルチユーザのランレベルで入ると /etc/init.d から自動的に起動する。

オプション

-f
フォアグラウンドモードに留まり続け、デーモンにならない。
-l
/etc/cron.d のファイルについて LSB 準拠の名前を有効にする。

注記

cron は、スプール領域 (/var/spool/cron/crontabs) に置かれた crontab ファイルを探す (これらのファイルには /etc/passwd 内のアカウントを元にした名前がつけられている)。 見つかった crontab ファイルはメモリにロードされる。 このディレクトリの crontab ファイルは直接アクセスすべきではないことに注意せよ。 ファイルのアクセスや更新には crontab を使用すべきである。

cron は /etc/crontab も読み込む。このファイルのフォーマットは少々異なっている ( crontab(5) を参照)。 さらに cron は /etc/cron.d 内のファイルも読み込み、それらのファイルを /etc/crontab ファイルと同様に処理する (/etc/cron.d 内のファイルは /etc/crontab の特別なフォーマットに従う。つまりユーザ名のフィールドを含む)。 しかし、/etc/cron.d 内のファイルは /etc/crontab とは独立している。 つまり、例えば環境変数の設定を /etc/crontab から継承したりはしない。 この機能の用途は、/etc/cron.{daily,weekly,monthly} ディレクトリよりも細かな予定の調節を必要とするパッケージが、 /etc/cron.d に crontab ファイルを追加できるようにすることである。 これらのファイルには、 そのファイルを提供するパッケージを元にした名前をつけるべきである。 また、ファイルの名前は、 run-parts(8) で使用される命名規則に準拠していなければならない。 つまり、大文字・小文字・数字・アンダースコア・ハイフンのみから 成っていなければならない。 -l オプションが指定されている場合、ファイル名は、 run-parts--lsbsysinit オプションの対象となる LSB の名前空間の仕様に準拠していなければならない。

/etc/crontab と同様、 /etc/cron.d ディレクトリ内のファイルも変更が監視される対象となる。 管理者は一般に、/etc/cron.d/ ではなく、 標準のシステムの crontab ファイル /etc/crontab を使用すべきである。

その上で cron は 1 分ごとに起動し、 保存された crontab ファイルをすべて調べ、 各コマンドについて、その時刻に実行すべきかを調べて確認する。 コマンド実行時に、出力はすべて crontab の所持者に (または、crontab ファイル内で MAILTO 環境変数に名前を書かれたユーザがあればそのユーザに) メールで送信される。 これらのプロセスを実行する cron の子コピーの名前には、 syslog や ps の出力に見られるように、 親の名前を強制的に大文字にしたものが使われる。

さらに cron は 1 分ごとにスプールディレクトリ(または /etc/crontab ファイル)の最終修正時刻(modtime)をチェックし、もし変更されていれば、 すべての crontab ファイルの最終修正時刻をチェックし、 変更された crontab ファイルを読み直す。 よって crontab ファイルを修正するたびに cron を再起動する必要はない。 crontab(1) コマンドは、crontab ファイルが変更されたかどうかにかかわらず、 スプールディレクトリの最終修正時刻を更新することに注意せよ。

時計に対して 3 時間未満の変更が与えられたとき、 例えばサマータイムが始まるときや終わるときについては、 特別の配慮がなされる。 時間が進められた場合、 飛ばされた時間に実行されるはずだったジョブは変更後すぐに実行される。 逆に、3 時間未満の時間が戻された場合、 繰り返される時間に入ったジョブが再び実行されることはない。

この配慮の影響は、 特定の時刻に実行されるジョブ (@hourly を用いて指定されていなく、 「時」や「分」のフィールドに '*' がないジョブ) のみが受ける。 ワイルドカードで指定されたジョブは、 直ちに新しい時刻に基づいて実行される。

3 時間を超える時計の変更は時刻の修正と見なされ、 直ちに新しい時刻が使用される。

cron は、syslog の 'cron' 機能にアクションの記録 (ログ) をとる。 ロギングは、標準の syslogd(8) の機能を用いて調節してもかまわない。

著者

Paul Vixie <[email protected]>