1. 概要

簡単に言えば、cronはUnixベースのシステムで利用できる基本的なユーティリティです。 これにより、ユーザーはタスクを指定された日時に定期的に実行するようにスケジュールできます。 そして、それは当然、多くのプロセス実行を自動化するための優れたツールであり、そうでなければ人間の介入が必要になります。

cronはデーモンプロセスとして実行されます。 これは、一度だけ開始する必要があり、バックグラウンドで実行し続けることを意味します。 このプロセスでは、 crontab を使用してスケジュールのエントリを読み取り、タスクを開始します。

時間の経過とともに、 cron式形式が広く採用されるようになり、他の多くのプログラムやライブラリがそれを利用しています。

2. Crontabの操作

cron スケジュールは、Linuxシステムの / var / spool / cron /crontabsの下にある単純なテキストファイルです。 crontabファイルを直接編集することはできません。そのため、crontabコマンドを使用してアクセスする必要があります。

crontab ファイルを開くには、次のコマンドを実行する必要があります。

crontab -e

crontab の各行は、式と実行するコマンドを含むエントリです。

* * * * * /usr/local/ispconfig/server/server.sh

このエントリは、前述のスクリプトを1分ごとに実行します。

3. cron式

cron式を理解しましょう。

これは5つのフィールドで構成されています。

<minute> <hour> <day-of-month> <month> <day-of-week> <command>

3.1. 式の特殊文字

  • *(すべて)は、イベントが時間単位ごとに発生することを指定します。 たとえば、<の「*」 分> フィールドは「毎分」を意味します。
  • ? (どれか) <で利用されます月の日> および< 曜日> フィールドは任意の値を示し、したがってフィールド値を無視します。 たとえば、「毎月5日」の曜日に関係なく、スクリプトを実行する場合は、「?」を指定します。 <で曜日> 分野。
  • –(範囲)は値の範囲を決定します。 たとえば、 フィールドは「10時間と11時間」を意味します。
  • 、(値)は複数の値を指定します。 例:「月、水、金 「「 <で曜日> フィールドとは、「月曜日、水曜日、金曜日」の日を意味します。
  • /(増分)は増分値を指定します。 たとえば、<の「5/15」 分> フィールドとは、「1時間の5、20、35、50分」を意味します。
  • L(最後)は、さまざまな分野で使用される場合、異なる意味を持ちます。 たとえば、<に適用されている場合月の日> フィールド、それは月の最後の日を意味します、すなわち 「1月31日」など、暦月ごとに。 「暦月の3日目から最後の日」を表す「L-3」のようなオフセット値で使用できます。 <で曜日> 、「週の最後の日」を指定します。 <の別の値と一緒に使用することもできます曜日> 、「先週の金曜日」を意味する「6L」のように。
  • W(平日)は、その月の特定の日に最も近い平日(月曜日から金曜日)を決定します。 たとえば、<に「10W」を指定した場合月の日> フィールドでは、「その月の10日に近い平日」を意味します。 したがって、「10日」が土曜日の場合、ジョブは「9日」にトリガーされ、「10日」が日曜日の場合、ジョブは「11日」にトリガーされます。 <で「1W」を指定した場合月の日> また、「1日」が土曜日の場合、月曜日の「3日」にジョブがトリガーされ、前月に戻ることはありません。
  • は、その月の曜日の「N番目」の出現を指定します。たとえば、「その月の第3金曜日」は「6#3」と表すことができます。

3.2. cron式の例

フィールドと特殊文字の組み合わせを使用して、cron式の例をいくつか見てみましょう。

午後12時 (正午)毎日

0 12 * * ?

午後1時から5分ごと 午後1時55分に終了 午後6時に開始します 毎日午後6時55分に終了します

0/5 13,18 * * ?

毎分午後1時から 毎日午後1時5分に終了します

0-5 13 * * ?

午後1時15分 午後1時45分 6月の毎週火曜日

15,45 13 ? 6 Tue

午前9時30分 毎週月曜日、火曜日、水曜日、木曜日、金曜日

30 9 ? * MON-FRI

午前9時30分 毎月15日

30 9 15 * ?

午後6時 毎月最終日

0 18 L * ?

午後6時 毎月最終日から3日目

0 18 L-3 * ?

午前10時30分 毎月最終木曜日

30 10 ? * 5L

午前10時 毎月第3月曜日

0 10 ? * 2#3

その月の10日から始まる5日間、毎日深夜12時

0 0 10/5 * ?

4. cron特殊文字列

cron式で指定されたフィールドに加えて、フィールドの代わりに使用できるいくつかの特別な事前定義された値もサポートされています。

  • @reboot –起動時に1回実行
  • @yearlyまたは@annualy –年に1回実行
  • @monthly –月に1回実行
  • @weekly –週に1回実行
  • @dailyまたは@midnight –1日1回実行
  • @hourly –1時間ごとに実行

5. 結論

この簡単な記事では、cronジョブとcrontabについて説明しました。

また、日常業務で使用したり、他の式を推測したりできる式の例もいくつか見てきました。