Cronは、特定の形式を使用してジョブを実行するスケジューリングデーモンです。 Linuxで自動タスク実行に使用する方法は次のとおりです。
cron は、LinuxまたはUnixオペレーティングシステムで見つけて使用できる最も便利なユーティリティの1つです。 cronの使用は、コマンドやシェルスクリプトなどのタスクを定期的に実行するための一般的な方法です。これらの定期的なタスクはCronジョブとも呼ばれ、特定の時間に実行されるようにスケジュールされています。
たとえば、cronジョブを設定して、データベースやデータのバックアップ、最新のセキュリティパッチによるシステムの更新、メールの送信などの反復的なタスクを自動化できます。
Cronは、時間に使用されるギリシャ語の「Chronos」にちなんで名付けられました。このガイドでは、crontabを使用してジョブをスケジュールする方法と、cronの特別な構文形式を使用してジョブを実行する方法の概要を説明します。
crontabファイルとは何ですか?
とりわけ、crontabファイル 指定された時間に実行されることを意図したコマンドのリストを含む単純なテキストファイルです。 crontab
を使用して編集されます 指図。 crontabファイル内のコマンド(およびそれらの実行時間)は、システムバックグラウンドでコマンドを実行するcronデーモンによってチェックされます。
crontabファイルの各行は、「アクティブ」または「非アクティブ」のいずれかです。 「アクティブ」行は、環境設定またはcronコマンドエントリです。 「非アクティブ」行は、コメントを含め、無視されるものです。
空白行と先頭のスペースおよびタブは無視されます。最初の非スペース文字がポンド記号である行( #
)はコメントとして解釈され、無視されます。
コメントはコマンドの一部として解釈されるため、cronコマンドと同じ行にコメントを付けることはできません。同じ理由で、環境変数の設定と同じ行にコメントを付けることはできません。
crontabファイルの各エントリは、次の順序で指定する6つのフィールドで構成されています。
minute hour day month weekday command
フィールド | 可能な値 | 構文 | 説明 |
---|---|---|---|
分 | 0 – 59 | 11 * * * * | cronジョブは、システム時計が分の位置に11を表示するたびに開始されます。 |
時間 | 0 – 23 | 0 1 * * * | cronジョブは、システム時計が午前1時を示しているときはいつでも実行されます(午後1時は13としてコード化されます)。 |
日 | 0 – 31 | 0 0 19 * * | 月の日は19です。これは、ジョブがその月の19日ごとに実行されることを意味します。 |
月 | 0 =なし、12=12月 | 0 0 0 7 * | 数値の月は7であり、ジョブが7月にのみ実行されることを決定します。 |
平日 | 0=日曜日および7=日曜日 | 0 0 * * 1 | 1が現在の位置にあるということは、ジョブが月曜日にのみ実行されることを意味します。 |
コマンド | スペシャル | 実行するコマンドの完全なシーケンス。コマンド、実行可能ファイル(スクリプトなど)、または組み合わせを使用できます。 |
これらのフィールドはいずれもアスタリスク(*
)に設定できます ) 、「最初から最後まで」の略です。たとえば、1時間ごとにジョブを実行するには、*
を入力します 時間フィールドで。
数値の範囲も許可されます。 範囲は、ハイフンで区切られた2つの数値です(-
。 指定された範囲は包括的です。例:8-11
「hours」エントリの場合、時間8
での実行を指定します 、9
、10
、および11
。
リストは許可されています。 リストは、カンマ(,
)で区切られた一連の数値(または範囲)です。 。 次にいくつかの例を示します:1,2,5,9
または0-4,8-12
。
アスタリスクの後のステップも許可されます したがって、「2時間ごと」と言いたい場合は、*/2
を使用できます。 。
cronデーモンは1分ごとにcrontabをチェックします。コマンドは、分、時間、月のフィールドが現在の時刻と一致し、2つの日のフィールド(日、または曜日)の少なくとも1つが現在の日と一致する場合にcronによって実行されます。
cronジョブは、5つの日時フィールドの代わりに使用できる特別にフォーマットされた文字列も提供します。これらは基本的に、指定された同等の数値スケジュールのショートカットです:
文字列 | M意味 |
---|---|
@reboot | 指定されたコマンドを起動時に1回実行します 。 |
@ yearly、@ annually | 両方とも指定されたタスクを実行します毎年 1月1日の午前12:00。これは、crontabファイルで「0 0 11*」を指定するのと同じです。 |
@monthly | ジョブを実行します月に1回 、1日午前12:00。標準のcron構文では、これは「0 0 1**」 | と同等です。
@weekly | ジョブを実行します週に1回 日曜日の午前12:00。標準のcron構文では、これは「0 0 **0」と同等です |
@ daily、@ midnight | 両方ともcronジョブを実行します毎日 午前12:00。これは、crontabファイルで「0 0 ***」を指定するのと同じです。 |
@hourly | 毎時間の先頭でジョブを実行します 。標準のcron構文では、これは「0 * ***」 | と同等です。
crontabコマンドの使用方法
crontab
commandは、cronデーモンが実行する特定のcronジョブ形式を使用して、コマンドと命令を含むcrontabファイルを作成します。 crontab
を使用できます 次のオプションを指定したコマンド:
コマンド | 説明 |
---|---|
crontab -e | 編集 crontabファイルを作成するか、まだ存在しない場合は作成します。 |
crontab -l </ td> | 表示 crontabファイル。 |
crontab -r | 削除 crontabファイル。 |
crontab -u user | 他のオプションと組み合わせて使用すると、このオプションを使用して、ユーザーのcrontabファイルを変更または表示できます。このオプションを使用できるのは管理者のみです。 |
たとえば、独自のcrontabファイルを編集または作成するには、シェルプロンプトで次のコマンドを入力します。
crontab -e
crontabファイルを変更した後にcronを再起動する必要はありません。 cronは、すべてのcrontabの変更時刻を調べ、変更されたものを再読み込みします。
rootまたは別のユーザーに属するcrontabファイルを編集するには、rootになる必要があります。もちろん、crontabファイルを編集するためにrootになる必要はありません。
crontab -u [username] -e
crontabファイルを削除する方法
ほとんどの場合、crontabファイルは削除したくないでしょう。ただし、crontabファイルから一部の行を削除することをお勧めします。
ユーザーのcrontabファイルを削除するには、次のコマンドを実行します。
crontab -r
コマンド | cron Job |
---|---|
* * * * * /root/script.sh | Cronジョブを毎分実行します。 |
0 * * * * / root/スクリプト .sh | Cronジョブを1時間ごとに実行します。 |
0 0 * * * / root/スクリプト .sh | 毎日深夜にCronジョブを実行します。 |
0 2 * * * / root/スクリプト .sh | 毎日午前2時にCronジョブを実行します。 |
0 0 15 * * / root/スクリプト .sh | CronJobを毎月15日の深夜に実行します。 |
0 0 0 12 * / root/スクリプト .sh | 12月1日の深夜にCronジョブを実行します。 |
0 0 * * 6 / root/スクリプト .sh | 土曜日の深夜にCronジョブを実行します。 |
0 15 * * 1-5 /root/script.sh | 月曜日から金曜日まで毎日午後3時にCronジョブを実行します。 |
* / 5 * * * * /root/script.sh | 5分ごとにcronジョブを実行します。 |
0 8-16 * * * /root/script.sh | Cron Jobを毎日、毎時、毎時、午前8時から午後4時まで実行します。 |
0 4 * * 2,4 /root/script.sh | 火曜日と木曜日の午前4時にCronジョブを実行します。 |
@reboot /root/script.sh | システムの起動時にCronジョブを実行します。 |
これで、cronジョブ形式を使用してLinuxでタスクをスケジュールする方法を十分に理解できました。このガイドに示されている例を使用して、システムでcronジョブを作成およびスケジュールします。シェルスクリプトと組み合わせると、通常は面倒または複雑なタスクを自動化できます。
詳細については、こことここのcronとcrontabのマニュアルページに、cronシステムがどのように機能するかについての優れた情報と説明があります。