Cron式へのガイド

Cron式のガイド

1. 概要

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

Cronはデーモンプロセスとして実行されます。つまり、1回だけ起動するだけで、バックグラウンドで実行され続けます。 このプロセスでは、crontabを使用してスケジュールのエントリを読み取り、タスクを開始します。

時間の経過とともに、the cron expression format became widely adoptedは、他の多くのプログラムやライブラリで使用されることがよくあります。

参考文献:

クォーツの紹介

Quartz APIを使用してジョブをスケジュールする方法を学びます。

春の@Scheduledアノテーション

Springで@Scheduledアノテーションを使用して、固定遅延の後、固定レートで、またはcron式に従ってタスクを実行する方法。

2. Crontabの操作

cronスケジュールは、Linuxシステムの/var/spool/cron/crontabsの下にある単純なテキストファイルです。 We cannot edit the crontab files directly; crontabコマンドを使用してアクセスする必要があります。

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

crontab -e

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

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

このエントリは、1秒ごとに上記のスクリプトを実行するために追加されます。

3. cron式

cron式を理解しましょう。 6つのフィールドで構成されています。

       

これらから、<year>フィールドはオプションです。

3.1. 表現のスペシャルキャラクター

  • * (all) –時間単位ごとにイベントが発生するように指定するために使用されます。 たとえば、<minute>フィールドの“*” –「毎分」を意味します

  • ? (any) –任意の値を示すために<day-of-month>および<day-of -week>フィールドで使用されます–フィールド値を無視します。 たとえば、曜日がその日付に関係なく、「毎月5日」にスクリプトを実行する場合は、<day-of-week>フィールドに「?」を指定します。

  • – (range) –値の範囲を決定するために使用されます。 たとえば、<hour>フィールドの「10-11」は「10時間と11時間」を意味します

  • , (values) –複数の値を指定するために使用されます。 たとえば、「<day-of-week>フィールドのMON, WED, FRI”は、「月曜日、水曜日、および金曜日」の日を意味します。

  • / (increments) –増分値を指定するために使用されます。 たとえば、<minute>フィールドの“5/15”は、「1時間の5、20、35、および50分」を意味します。

  • L (last) –さまざまなフィールドで使用すると意味が異なります。 たとえば、<day-of-month>フィールドに適用されている場合は、その月の最終日を意味します。 「1月は31日」など、暦月ごとに。 「暦月の最後から3番目の日」を表す「L-3」のようなオフセット値とともに使用できます。 <day-of-week>では、「週の最後の日」を指定します。 また、「先週の金曜日」を表す「6L」など、<day-of-week>の別の値とともに使用することもできます。

  • W (weekday) –月の特定の日に最も近い平日(月曜日から金曜日)を指定するために使用されます。 たとえば、<day-of-month>フィールドに「10W」を指定すると、「その月の10日に近い平日」を意味します。 したがって、「10th」が土曜日の場合、ジョブは「9th」にトリガーされ、「10th」が日曜日の場合、「11th」にトリガーされます。 <day-of-month>に「1W」を指定し、「1st」が土曜日の場合、ジョブは月曜日の「3rd」にトリガーされ、前月にジャンプしません。

  • # –月の平日の「N-th」オカレンスを指定するために使用されます。たとえば、「月の第3金曜日」は「6#3」として示すことができます。

3.2. cron式の例

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

2017年中、毎日午後12時(正午):

0 0 12 * * ? 2017

毎日午後1時から午後1時55分まで、午後6時から午後6時55分まで、5分ごと。

0 0/5 13,18 * * ?

毎日午後1時から午後1時5分までの毎分:

0 0-5 13 * * ?

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

0 15,45 13 ? 6 Tue

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

0 30 9 ? * MON-FRI

毎月15日の午前9時30分:

0 30 9 15 * ?

毎月最終日の午後6時:

0 0 18 L * ?

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

0 0 18 L-3 * ?

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

0 30 10 ? * 5L

2015年、2016年、2017年の毎月最終金曜日の午後6時:

0 0 18 ? * 6L 2015-2017

毎月第3月曜日の午前10時:

0 0 10 ? * 2#3

月の10日から始まる5日間、毎日午前0時。

0 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について説明しました。

また、日常業務で使用したり、他の表現を単純に推測したりできる、多くの表現の例を見てきました。