crontab - 個々のユーザーの crontab ファイルを管理する (Vixie Cron)
概要
crontab [-h]
crontab [-u user] [-n] file
crontab [-u user] [-i] {-e | -l | -r}
説明
^ rontab は、Vixie Cron で cron(8) デーモンを駆動するために使用されるテーブルをインストール、アンインストール、または一覧表示するためのプログラムです。各ユーザーは独自の crontab を持つことができ、これらは /var/spool/cron/crontabs 内のファイルですが、直接編集することを意図していません。
/etc/cron.allow ファイルが存在する場合、このコマンドを使用するには、そこに 1 行に 1 ユーザーとしてリストされている必要があります。/etc/cron.allow ファイルが存在しないが、/etc/cron.deny ファイルが存在する場合、このコマンドを使用するには、/etc/cron.deny ファイルにリストされていてはなりません。
/etc/cron.allow ファイルのパーミッションが、許可されているユーザーが読み取り可能であることを確認してください。たとえば、パーミッション rw- r-- r-- (8 進数 644) であれば問題ありません。
これらのファイルが存在しない場合、サイトに依存する構成パラメーターに応じて、スーパーユーザーのみがこのコマンドを使用できるか、すべてのユーザーがこのコマンドを使用できるようになります。
両方のファイルが存在する場合、/etc/cron.allow が優先されます。つまり、/etc/cron.deny は考慮されず、crontab を使用するには、ユーザーが /etc/cron.allow にリストされている必要があります。
これらのファイルの存在に関係なく、root 管理ユーザーは常に crontab を設定できます。標準の Debian システムでは、すべてのユーザーがこのコマンドを使用できます。
-h オプションが指定された場合、crontab はヘルプメッセージを表示してすぐに終了します。
-u オプションが指定された場合、これは、使用するユーザーの crontab の名前を指定します (一覧表示する場合)、または変更する (編集する場合) ユーザーの crontab の名前を指定します。このオプションが指定されていない場合、crontab は「自分の」crontab ファイル、つまりコマンドを実行しているユーザーの crontab ファイルを調べます。su({filename}../../su)(8) が crontab を混乱させる可能性があることに注意してください。su({filename}../../su)(8) の中で実行している場合は、安全のために常に -u オプションを使用する必要があります。
このコマンドの最初の形式は、名前付きファイルから、または疑似ファイル名 '-' が指定された場合は標準入力から、新しい crontab をインストールするために使用されます。
-n オプションが指定された場合、「ドライラン」を意味します。crontab は「自分の」crontab の構文を調べ、構文が正しい場合は成功メッセージを出力しますが、crontab には何も書き込みません。
-l オプションは、現在の crontab を標準出力に表示します。下記「DEBIAN 固有」のセクションを参照してください。
-r オプションは、現在の crontab を削除します。
-e オプションは、sensible-editor(1) を使用して現在の crontab を編集するために使用されます。エディターを終了すると、変更された crontab が自動的にインストールされます。
-i オプションは、-r オプションを修正し、実際に crontab を削除する前に、ユーザーに 'y/Y' の応答を促します。
DEBIAN 特有
crontab -l の「デフォルトの」動作は、crontab がインストールされたときに crontab の先頭に配置される 3 行の「このファイルを編集しないでください」というヘッダーを表示することです。問題は、これにより、次のシーケンスが非冪等になることです。
crontab -l | crontab — ヘッダーのコピーを追加し続けます。これは、sed を使用して crontab を編集するスクリプトで問題が発生します。したがって、-l オプションのデフォルトの動作は、そのようなヘッダーを出力しないように変更されました。元の動作は、環境変数 CRONTAB_NOHEADER を 'N' に設定することで得られます。これにより、crontab -l コマンドは余分なヘッダーを出力します。
crontab -L の出力の強調表示
crontab -l コマンドはプレーンテキストを出力します。tty が ANSI シーケンスをサポートしてテキストに色を付けることができる場合、次のようにして出力を強調表示できます。crontab -l | spc -t crontab(tty の背景が暗い場合)、または crontab -l | spc -t crontab-light(背景が明るい場合)。
強調表示のスキームは、/etc/supercat/spcrc-crontab* のカスタマイズされたバージョンを使用することで変更できます。
また、bat パッケージで提供される batcat(1) プログラムを使用して、このテキストに色を付けることもできます。以下に例を示します。
crontab -l | batcat --language Crontab
関連項目
crontab(5)、cron(8)、spc(1)
ファイル
/etc/cron.allow、/etc/cron.deny /etc/cron.allow と /etc/cron.deny が存在する場合、それらはワールド・リーダブルであるか、または「crontab」グループによって読み取り可能である必要があります。そうでない場合、cron(8) は、パーミッションが修正されるまで、すべてのユーザーへのアクセスを拒否します。
/var/spool/cron/crontabs /var/spool/cron/crontabs ディレクトリには、各ユーザーの crontab 用のファイルが 1 つずつあります。ユーザーは、そのディレクトリ内のファイルを直接編集することはできません。これにより、システムで周期的なタスクを実行することを許可されているユーザーのみがそれらを追加でき、構文的に正しい crontab のみがそこに書き込まれるようにします。これは、ディレクトリを「crontab」グループのみが書き込めるようにし、その特定のグループに対して crontab コマンドに setgid ビットを設定することで実現されます。
標準
crontab コマンドは、IEEE Std1003.2-1992(``POSIX'')に準拠しています。この新しいコマンド構文は、以前のバージョンの Vixie Cron、および古典的な SVR3 構文とは異なります。
診断
無効なコマンドラインで実行すると、かなり有益な使用法メッセージが表示されます。
cron(8) は、crontab の各エントリの最後に改行文字が必要とします。crontab の最後の行に改行がない場合、cron(8) は、crontab が(少なくとも部分的に)破損しているとみなし、インストールを拒否します。
/var/spool/cron/crontabs 内のファイルは、ユーザーのアカウント名に基づいて名前が付けられます。crontab のジョブは、アカウントがローカルシステムでの変更、または外部のユーザーデータベース(たとえば LDAP ディレクトリ)によって管理されるために名前が変更されたユーザーに対しては実行されません。
著作者
Paul Vixie <_> このマニュアルページを記述 (1994年)。
Steve Greenland <_> パッケージの保守 (1996-2005年)。
Javier Fernández-Sanguino Peña <_> パッケージの保守 (2005-2014年)。
Christian Kastner <_> パッケージの保守 (2010-2016年)。
Georges Khaznadar <_> パッケージの保守 (2022-2024年)。
著作権
Copyright © 1994 Paul Vixie
自由に配布できますが、以下の点にご注意ください。ソースまたはドキュメントから私の名前を削除しないでください(私の作業の功績を横取りしないでください)、変更箇所にマークを付けてください(私のせいではない可能性のあるバグの責任を負わせないでください)、この通知を変更または削除しないでください。ビルド可能なソースが購入者に提供される場合は販売可能です。このソフトウェアには、いかなる種類の保証も、明示的または黙示的にも含まれていません。使用はご自身の責任で行い、このソフトウェアの使用に起因する損害(ある場合)に対する責任はすべてユーザーにあります。
1994年以降、このマニュアルページには多くの変更が加えられており、Debianの開発者がcron(TM)を保守しています。上記は簡単なリストであり、詳細については、ファイル/usr/share/doc/cron/copyright を参照してください。