コマンドラインのマニュアル

Man » cron マニュアル オンライン - cron man ページの詳細なオンラインドキュメント

🌍
cron - スケジュールされたコマンドを実行するデーモン (Vixie Cron)

SYNOPSIS

cron [-f] [-l] [-L loglevel] [-n fqdn] [-x debugflags]

cron [-N]

DESCRIPTION

cron は、systemd(1) によって、マルチユーザー実行レベルに入ったときに直接呼び出されます。

OPTIONS

-f

フォアグラウンドモードで実行し、デーモン化しない。

-l

/etc/cron.d ファイルに、LSB 互換の名前を使用します。ただし、この設定は、/etc/cron.hourly、/etc/cron.daily、/etc/cron.weekly、または /etc/cron.monthly のファイルには影響しません。

-n fqdn

メールを送信するときに、FQDN を件名に含めます。デフォルトでは、cron はホスト名を省略します。

-N

cron ジョブをすぐに実行し、終了します。このオプションは、テストを実行するのに役立ちます。

-L loglevel

cron がジョブについてログに記録する内容 (エラーは、この値に関係なくログに記録されます) を、次の値の合計として指定します。

1   すべての cron ジョブの開始をログに記録します。

2   すべての cron ジョブの終了をログに記録します。

4   すべての失敗したジョブ (終了ステータスが 0 ではない) をログに記録します。

8   すべての cron ジョブのプロセス番号をログに記録します。

デフォルトでは、すべてのジョブの開始 (1) がログに記録されます。loglevel をゼロ (0) に設定すると、ログ記録が無効になります。値 15 は、すべてのオプションを選択します。

-x debugflags

cron に、より詳細な情報を出力してデバッグ情報を表示するように指示します。debugflags は、これらの値の合計です。

1   "ext": ...

2   "sch": ...

4   "proc": ...

8   "pars": ...

16  "load": ..

32  "misc": ...

64  "test": ...

128 "bit": ...

NOTES

cron は、スプール領域 (/var/spool/cron/crontabs/) 内の crontab ファイル (これらは /etc/passwd のアカウント名に基づいて名前が付けられます) を検索し、見つかった crontab をメモリにロードします。このディレクトリ内の crontab は直接アクセスするべきではありません。 [crontab]({filename}../../crontab)(1) コマンドを使用してアクセスおよび更新する必要があります。

cron は、/etc/crontab も読み取ります。これは、わずかに異なる形式になっています ( crontab(5) を参照)。 Debian では、/etc/crontab の内容は、/etc/cron.hourly、/etc/cron.daily、/etc/cron.weekly、および /etc/cron.monthly のプログラムを実行するように事前に定義されています。この構成は Debian に固有であり、以下に示す DEBIAN SPECIFIC の注意を参照してください。

さらに、Debian では、cron は /etc/cron.d ディレクトリ内のファイルも読み取ります。cron は、/etc/cron.d のファイルを /etc/crontab ファイルと同じ方法で処理します (これらは、そのファイルの特殊な形式に従い、ユーザーフィールドが含まれます)。ただし、これらは /etc/crontab とは独立しています。たとえば、/etc/crontab から環境変数の設定を継承しません。この変更は Debian に固有であり、以下に示す DEBIAN SPECIFIC の注意を参照してください。

/etc/crontab と同様に、/etc/cron.d ディレクトリ内のファイルも変更を監視します。システム管理者は、/etc/cron.d/ に "local" または "local-foo" などのファイル名で cron ジョブを作成できます。


/etc/crontab および /etc/cron.d 内のファイルは、root が所有し、グループまたはその他のユーザーが書き込み可能であってはなりません。スプール領域とは異なり、/etc/cron.d または /etc/cron.hourly、/etc/cron.daily、/etc/cron.weekly、および /etc/cron.monthly 内のファイルは、シンボリックリンクにすることもできます。ただし、シンボリックリンクと、それが指すファイルの両方が root によって所有されている必要があります。/etc/cron.d 内のファイルは実行可能である必要はありませんが、/etc/cron.hourly、/etc/cron.daily、/etc/cron.weekly、および /etc/cron.monthly 内のファイルは、run-parts (run-parts(8) を参照) によって実行されるため、実行可能である必要があります。

cron は毎分起動し、保存されているすべての crontab を調べて、各コマンドが現在の分に実行されるべきかどうかを確認します。コマンドを実行する際、すべての出力は、crontab の所有者 (または crontab 内の MAILTO 環境変数に指定されたユーザー) から、crontab の所有者 (または crontab 内の MAILFROM 環境変数に指定されたメールアドレス) にメールで送信されます。これらのプロセスを実行する cron の子プロセスは、その名前が大文字に変換され、syslog および [ps]({filename}../../ps)(1) の出力に表示されます。

さらに、cron は各分に、スプールディレクトリの最終更新時刻 (または /etc/crontab ファイルの最終更新時刻) が変更されたかどうかを確認します。変更されている場合、cron はすべての crontab の最終更新時刻を調べて、変更されたものを再読み込みします。したがって、crontab ファイルが変更されたときに、cron を再起動する必要はありません。[crontab]({filename}../../crontab)(1) コマンドは、crontab が変更されるたびに、スプールディレクトリの最終更新時刻を更新します。

時計が 3 時間未満変更された場合 (例えば、夏時間の開始時と終了時) には、特別な考慮事項があります。時間が進んだ場合、スキップされた時間に実行されるはずだったジョブは、変更後すぐに実行されます。逆に、時間が 3 時間未満戻った場合、繰り返された時間に該当するジョブは再実行されません。

特定の時間に実行されるジョブ (例えば、@hourly で指定されたジョブ、または時間または分フィールドに * が使用されたジョブ) のみが影響を受けます。ワイルドカードで指定されたジョブは、新しい時間に基づいてすぐに実行されます。

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

cron は、syslog ファシリティ 'cron' にアクションを記録し、logging は標準の syslogd(8) ファシリティを使用して制御できます。

環境

Debian システムの /etc/default/cron で設定されている場合、cron デーモンのローカリゼーション設定環境は、/etc/environment の使用または /etc/default/locale の使用によって管理できます。後者のファイルからの値は、前者からの値を上書きします。これらのファイルは読み込まれ、LANG、LC_ALL、および LC_CTYPE 環境変数を設定するために使用されます。これらの変数は、メールの文字セットを設定するために使用され、デフォルトは 'C' です。


これは、cronの下で実行されるタスクの環境には影響しません。タスクの環境を変更する方法の詳細については、crontab(5) を参照してください。

デーモンは、存在する場合、/etc/localtime からタイムゾーンの定義を使用します。

環境はユーザーの crontab 定義で再定義できますが、cron は単一のタイムゾーンでのみタスクを処理します。

Debian 固有

Debian は、オリジナルのバージョンには存在しなかった、cron にいくつかの変更を導入します。最も重要な変更点は次のとおりです。

  • /etc/cron.{hourly,daily,weekly,monthly} および /etc/crontab を介したサポート。
  • /etc/cron.d (パッケージの crontab 用のドロップインディレクトリ) のサポート。
  • PAM サポート。
  • SELinux サポート。
  • 監査ログサポート。
  • 夏時間およびその他の時間関連の変更/修正。
  • SGID crontab(1) (SUID root ではなく)。
  • Debian 固有のファイル場所とコマンド。
  • Debian 固有の構成 (/etc/default/cron)。
  • 多数のその他の小さな機能と修正。

/etc/cron.hourly、/etc/cron.daily、/etc/cron.weekly、および /etc/cron.monthly のサポートは、Debian では /etc/crontab ファイルのデフォルト設定を通じて提供されます (システム全体の例については、crontab(5) を参照)。デフォルトのシステム全体の crontab には、毎時間、毎日、毎週、毎月の 4 つのタスクが含まれています。これらのタスクはそれぞれ、run-parts(8) を実行し、それぞれのディレクトリを引数として渡します。これらのタスクは、競合を避けるために、anacron(8) がインストールされている場合 (毎時間のタスクを除く) は無効になります。

上記のように、これらのディレクトリ内のファイルは、次のチェックを含むいくつかの整合性チェックに合格する必要があります。実行可能であること、root によって所有されていること、グループまたはその他によって書き込み可能でないこと、および、シンボリックリンクの場合、root によって所有されているファイルを参照すること。さらに、ファイル名は run-parts(8) のファイル名要件に準拠する必要があります。ファイル名は、文字と数字だけで構成され、特殊文字としてアンダースコア ('_') とハイフン ('-') のみを含めることができます。これらの要件に準拠しないファイルは、run-parts(8) によって実行されません。たとえば、ドットを含むファイルは無視されます。これは、Debian パッケージ管理システムが /etc/cron.d/ のファイル(つまり、末尾が .dpkg-dist、.dpkg-orig、.dpkg-old、および .dpkg-new のファイル)を構成ファイルとして処理する場合に、cron がこれらのファイルを実行しないようにするために行われます。

この機能は、システム管理者とパッケージを使用して、定義された間隔で実行されるタスクを含めることができます。これらのディレクトリでパッケージによって作成されたファイルは、そのパッケージの名前で命名する必要があります。

/etc/cron.d のサポートは、cron デーモン自体に含まれており、この場所をシステム全体の crontab スプールとして処理します。このディレクトリには、/etc/crontab で使用される形式に従うタスクを定義する任意のファイルを含めることができます。つまり、ユーザーの crontab とは異なり、これらのファイルはタスク定義でタスクを実行するユーザー名を指定する必要があります。


このディレクトリ内のファイルは、root によって所有されている必要があり、実行可能である必要はありません(これらは構成ファイルであり、/etc/crontab と同じです)。また、run-parts(8) で使用されるものと同じ命名規則に従う必要があります。ファイル名は、大文字と小文字のアルファベット、数字、アンダースコア、ハイフンのみで構成される必要があり、ドットを含めることはできません。cron に -l オプションが指定されている場合(このオプションは /etc/default/cron で設定できます。下記を参照)、ファイルは LSB 名前空間仕様に厳密に従う必要があります。これは、runparts(8) の --lsbsysinit オプションで使用されるものと同じです。

この機能の主な目的は、/etc/cron.{hourly,daily,weekly,monthly} ディレクトリよりも詳細なスケジューリング制御を必要とするパッケージが、/etc/cron.d に crontab ファイルを追加できるようにすることです。これらのファイルは、パッケージ名に基づいて命名する必要があります。

また、cron のデフォルト設定は /etc/default/cron で制御され、これは cron デーモンを起動する init.d スクリプトによって読み込まれます。このファイルは、cron がシステムの環境変数を読み込むかどうかを決定し、cron プログラムの実行前に、ログの設定や /etc/cron.d 内のファイルを処理する方法を定義するために、追加のオプションを cron プログラムに追加できるようにします。

関連項目

crontab(1), crontab(5), run-parts(8)

著者

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 ファイルに詳細な情報があります。