crontab(1) 各ユーザーのための crontab ファイルを管理する (V3)

書式

crontab [ -u user ] file
crontab [ -u user ] { -l | -r | -e }

説明

crontab は、Vixie Cron パッケージの cron(8) デーモンの運用に使われるテーブルをインストール・アンインストール・ 表示するためのプログラムである。 ユーザーはそれぞれ自分用の crontab を保有できる。 これらは /var/spool/cron/crontabs 以下に置かれるが、 直接には編集できないようにしてある。

/etc/cron.allow ファイルが存在する場合、ユーザーがこのコマンドを使用するには、 そのファイル中に(そのユーザーが)リストアップされている必要がある。 /etc/cron.allow ファイルは存在せずに /etc/cron.deny ファイルが存在する場合、ユーザーがこのコマンドを使用するには、 /etc/cron.deny ファイル中にリストアップされて いない 必要がある。 いずれのファイルも存在しない場合、スーパーユーザーのみがこのコマンドを 使えるか、あるいはすべてのユーザーがこのコマンドを使えることになり、 そのいずれであるかはサイトに依存した設定パラメータによって決まる。 標準の Debian システムでは、ユーザは誰でも cron コマンドを使用できるようになっている。

-u オプションでは、対象となる crontab の所有者名を指定する。 このオプションが与えられていない場合、 crontab は "あなたの" crontab 、すなわちコマンドを実行している人の crontab を 調べる。 なお、 su(8) を使っていると crontab を混同しかねないため、 su(8) 内部での実行中は、安全のため常に -u オプションを使うべきである。

このコマンドの 1 つ目の書式は、 新しい crontab を(何らかの名前の付けられた)ファイル、 もしくは標準入力(疑似ファイル名 ``-'' が与えられた場合)から インストールするために使われる。

-l オプションは、現在の crontab を標準出力へ表示させる。 以下の DEBIAN 固有 に書かれている注記を参照。

-r オプションは、現在の crontab を削除する。

-e オプションは、環境変数 VISUAL もしくは EDITOR で指定されている エディターを使って、現在の crontab を編集するのに使われる。 編集終了後、変更された crontab は自動的にインストールされる。 どちらの環境変数も定義されていない場合は、 デフォルトのエディタ /usr/bin/editor が使用される。

DEBIAN 固有

オリジナルの crontab -l の挙動では、 crontab ファイルがインストールされたときにファイルの頭に挿入される、 "DO NOT EDIT THIS FILE" で始まる 3 行のヘッダが表示される。 問題は、この挙動のために、

crontab -l | crontab -

を繰り返し実行すると同じ結果を返さない、 つまりヘッダのコピーを追加し続けてしまうことである。 これは、crontab の編集に sed を使用するスクリプトには悩みの種になる。 したがって、 -l オプションのデフォルトの挙動は、 そのようなヘッダを出力しないように変更されている。 環境変数 CRONTAB_NOHEADER を 'N' に設定すれば、元々の挙動どおり、 crontab -l コマンドが追加のヘッダを出力するようになる。

ファイル

/etc/cron/allow
/etc/cron/deny

準拠

crontab コマンドは、IEEE Std1003.2-1992 (``POSIX'') に準拠している。 この新しいコマンドのシンタックスは、 Vixie Cron の前のバージョンと異なっている (古典的な SVR3 シンタックスとも異なる)。

返り値

正しくないコマンドラインでこのコマンドを実行すると、 多少の情報を含む利用法のメッセージが表示される。

バグ

cron では crontab の各エントリの末尾に改行文字があることが必要になるが、 crontab コマンドも cron デーモンも、それに関する間違いを検出しない。 それどころか、crontab は通常どおりロードするように見える。 しかし、改行文字で終わっていないコマンドは絶対に実行されない。 間違いを防ぐためには、 crontab の末尾に必ず空行を入れるようにするのが一番よい。

著者

Paul Vixie <[email protected]>