# Cron式

Keeperボルト内で標準化されたUNIX Cron式を使用してローテーションを設定できます。

Keeperのバックエンドスケジューラでは、ローテーションの実行にオープンソースのQuartzジョブスケジューラを使用ていします。以下の内容は、Quartzの公開ドキュメントに基づいています。

以下の例では、Cron式は `0 28 17 ? * *` となり毎日午後5時28分 (太平洋標準時) に設定されています。

{% hint style="info" %}
Cron式を使用して設定するスケジュールローテーションでは、**最小間隔は1時間**となりました。1時間未満の間隔はサポートされていません。
{% endhint %}

<figure><img src="https://docs.keeper.io/~gitbook/image?url=https%3A%2F%2F762006384-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-MJXOXEifAmpyvNVL1to%252Fuploads%252FTIaWqFCNTV4EzHkyWdZ3%252FScreenshot%25202024-07-23%2520at%25205.36.03%25E2%2580%25AFPM.png%3Falt%3Dmedia%26token%3D71cc67c2-a9b4-4518-b704-b3aeb9c12bc4&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=523914a6&#x26;sv=1" alt=""><figcaption><p>カスタムパスワードローテーションスケジュールのCron式記述</p></figcaption></figure>

## 形式 <a href="#format" id="format"></a>

Cron式は、6個または7個のフィールドを空白で区切って構成する文字列です。フィールドには、使用できる値のいずれかと、そのフィールドで使用できる特殊文字のさまざまな組み合わせを使います。フィールドは以下のとおりです。

<table data-header-hidden><thead><tr><th width="146"></th><th width="149"></th><th></th><th></th></tr></thead><tbody><tr><td>フィールド名</td><td>必須</td><td>値</td><td>使用できる特殊文字</td></tr><tr><td>秒</td><td>必須</td><td>0-59</td><td>, - * /</td></tr><tr><td>分</td><td>必須</td><td>0-59</td><td>, - * /</td></tr><tr><td>時間</td><td>必須</td><td>0-23</td><td>, - * /</td></tr><tr><td>日</td><td>必須</td><td>1-31</td><td>, - * ? / LW</td></tr><tr><td>月</td><td>必須</td><td>1-12またはJAN-DEC</td><td>, - * /</td></tr><tr><td>曜日</td><td>必須</td><td>1-7またはSUN-SAT</td><td>, - * ? / L #</td></tr><tr><td>年</td><td>必須ではない</td><td>空白、1970-2099</td><td>, - * /</td></tr></tbody></table>

Cron式は `* * * * ? *` のように単純なものも、`0/5 14,18,3-39,52 * ? JAN,MAR,SEP MON-FRI 2002-2010` のように複雑なものも可能です。

## 特殊文字 <a href="#special-characters" id="special-characters"></a>

* **\*** (すべての値) は、フィールド内ですべての値を選択するのに使用します。たとえば、分フィールドの「 **\*** 」は「毎分」を意味します。
* **?** (特定の値なし) は、文字が使用できる2つのフィールドのの1つに何かを指定する必要があ流ものの、もう一方のフィールドには指定する必要がない場合に便利です。たとえば、特定の日 (たとえば 10日) に発動させたいが、それが何曜日であるかは問題でない場合には、日付フィールドに「10」を入力し、曜日フィールドに「?」を入力します。詳細については、以下の例をご参照ください。
* **-** で範囲を指定します。たとえば、時間フィールドの「10-12」は「10時、11時、12時」を意味します。
* **,** で追加の値を指定します。たとえば、曜日フィールドの「MON,WED,FRI」は、「月曜日、水曜日、金曜日」を意味します。
* **/** で増加分を指定します。たとえば、秒フィールドの「0/15」は、「0秒、15秒、30秒、45秒」を意味し、「5/15」は、「5秒、20秒、35秒、50秒」を意味します。また、\* の後に / を指定することもできます。この場合、\* は / の前に0があるのと同じ意味となります。日付フィールドの「1/3」は、「月の第1日から3日ごとに実行する」ことを意味します。
* **L** (最後) は、フィールドによって意味が異なります。たとえば、日付フィールドの「L」は「月の最終日」を意味します。つまり、1月の場合は31日、うるう年でない2月の場合は28日です。曜日フィールドで単独で使用した場合、単に「7」または「SAT」を意味します。ただし、曜日フィールドで別の値の後に使用すると、「月の最後のX日」を意味します。たとえば、「6L」は「月の最後の金曜日」を意味します。また、月の最終日からのオフセットを指定することもできます。たとえば、「L-3」は、月の最後から3日目を意味します。「L」を使用する場合は、リストや値の範囲を指定しないことが重要です。混乱を招いたり予期しない結果になったりすることがあります。
* **W** (平日) で、特定の日に最も近い平日 (月曜日から金曜日) を指定します。たとえば、日付フィールドの値として「15W」を指定した場合、その意味は「月の 15 日に最も近い平日」となります。したがって、15日が土曜日の場合、トリガーは14日の金曜日に起動します。15日が日曜日の場合、トリガーは 16日の月曜日に起動します。15日が火曜日の場合、トリガーは15日の火曜日に起動します。ただし、日付の値として「1W」を指定し、1 日が土曜日の場合、トリガーは月の日の境界を跨ぐことはないため、3日の月曜日に起動します。「W」は、日付が単一の日であり、日の範囲でもリストでもない場合にのみ指定できます。

{% hint style="info" %}
「L」と「W」の文字を日付フィールドで組み合わせて「LW」にすることもできます。これは「月の最後の平日」を意味します。
{% endhint %}

* **#** では、月の「n番目」の X日を指定するために使用します。たとえば、曜日フィールドの「6#3」という値は、「月の第3金曜日」を意味します (6日目 = 金曜日、「#3」 = 月の3日目)。その他の例では、「2#1」は「月の第1月曜日」となり、「4#5」は月の第5水曜日となります。「#5」を指定し、その月に指定された曜日の5回目がない場合、その月は実行されないことにご留意ください。

{% hint style="info" %}
有効な文字と月と曜日の名前では大文字と小文字は区別されません。MONとmonは同じように処理されます。
{% endhint %}

## 例 <a href="#examples" id="examples"></a>

| Cron式                     | 意味                                          |
| ------------------------- | ------------------------------------------- |
| 0 0 12 \* \* ?            | 毎日12時に発動                                    |
| 0 15 10 ? \* \*           | 毎日午前10時15分に発動                               |
| 0 15 10 \* \* ?           | 毎日午前10時15分に発動                               |
| 0 15 10 \* \* ? \*        | 毎日午前10時15分に発動                               |
| 0 15 10 \* \* ? 2005      | 2005年毎日午前10時15分に発動                          |
| 0 10,44 14 ? 3 WED        | 3月の毎週水曜日、午後2時10分と午後2時44分に発動                 |
| 0 15 10 ? \* MON-FRI      | 毎週月曜、火曜、水曜、木曜、金曜の午前10時15分に発動                |
| 0 15 10 15 \* ?           | 毎月15日午前10時15分に発動                            |
| 0 15 10 L \* ?            | 毎月最終日の午前10時15分に発動                           |
| 0 15 10 L-2 \* ?          | 毎月2月末日の午前10時15分に発動                          |
| 0 15 10 ? \* 6L           | 毎月最終金曜日の午前10時15分に発動                         |
| 0 15 10 ? \* 6L           | 毎月最終金曜日の午前10時15分に発動                         |
| 0 15 10 ? \* 6L 2002-2005 | 2002年、2003年、2004年、2005年の毎月最終金曜日の午前10時15分に発動 |
| 0 15 10 ? \* 6#3          | 毎月第3金曜日の午前10時15分に発動                         |
| 0 0 12 1/5 \* ?           | 毎月1日から5日ごとに午後12時 (正午) に発動。                  |
| 0 11 11 11 11 ?           | 毎年11月11日午前11時11分に発動                         |


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.keeper.io/jp/keeperpam/privileged-access-manager/references/cron-spec.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
