Hinemos: カレンダ機能を用いて複雑なスケジュールで起動する


###### 実施環境：

```Linux:Linux
[root@testhost ~]# uname -a
Linux testhost 4.18.0-338.el8.x86_64 #1 SMP Fri Aug 27 17:32:14 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
[root@testhost ~]# cat /etc/redhat-release
CentOS Stream release 8
[root@testhost ~]# yum list installed | grep hinemos
hinemos-7.0-agent.noarch                           7.0.1-1.el                                                 @@commandline
hinemos-7.0-manager.x86_64                         7.0.1-1.el8                                                @@commandline
hinemos-7.0-web.x86_64                             7.0.1-1.el8                                                @@commandline
```

### 0. 概要

例えばファイルのバックアップを毎日取得するといったように、なんらかの処理を定期的に実行したい場合、 Hinemos ではジョブのスケジュール設定を用いることでこれを実現できます。
しかし、例えば毎月1日は処理を行わないといったような少々込み入った設定となると、スケジュール設定の機能だけでは対応が難しくなってきます。
このような複雑なスケジュールを組みたい際、 Hinemos では「カレンダ」という機能を用います。
今回はこのカレンダ機能を用いて、複雑なスケジュールでジョブの起動を制御してみます。

なお、単純なスケジュールの組み方については以下の過去記事をご参照ください。

https://qiita.com/frozencatpisces/items/ea4423c7b94e4ecc4412

### 1. カレンダ

カレンダの設定は、「パースペクティブ」⇒「カレンダ」から編集できます。

![WS000051.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/91b4ea1d-9b9b-1664-ba5c-c945af7c2221.jpeg "パースペクティブ")

![WS000052.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/2a85dc12-c6d3-eec9-c230-bd6c6d7d22f3.jpeg "カレンダ")

カレンダを作成するには、画面左上のパネル「カレンダ[一覧]」の「作成」ボタンを押します。

![WS000053.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/3bd4f82c-68ab-834d-b0d2-7a6d3fbf5ca7.jpeg "カレンダ一覧_1")

「作成」ボタンを押すと、カレンダの編集画面が開きます。

![WS000054.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/41fed374-6975-d2d5-a24d-7418880148ad.jpeg "カレンダ編集_1")

まずはカレンダ ID とカレンダ名を設定します。
とりあえず今回は、カレンダ ID は「 `calendar_test` 」、カレンダ名は「カレンダー_テスト」にしました。

![WS000056.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/df64ad03-df6f-a2bb-6ef0-cae09ef44870.jpeg "カレンダ編集_2")

次にカレンダの有効期限を設定します。
入力欄右側の「...」ボタンを押して日時を編集します。

![WS000056 - コピー.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/36c03fbc-2c4a-ca73-2a47-c7947d208d54.jpeg "カレンダ編集_3")

![WS000057.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/110cbc8b-5f41-8730-d4b7-a42aacb4f98b.jpeg "カレンダ編集_4")

とりあえず今回は、設定時点から1年間ほど有効となるようにしました。

![WS000058.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/b90916cb-0fcb-d717-a50d-c036fe1acf15.jpeg "カレンダ編集_5")

さて、いよいよカレンダ本体の編集に入っていきます。
まずは「追加」ボタンを押します。

![WS000058 - コピー.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/61d5aec3-c420-f52c-64fa-0cc0b86fcc11.jpeg "カレンダ編集_6")

すると、以下のような画面が開きます。

![WS000059.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/0122ebe6-e873-fe82-69b7-30c86fefa097.jpeg "カレンダ編集_7")

とりあえず今回は開始時刻を「 15:00:00 」、終了時刻を「 15:30:00 」にし、稼働非稼働を「稼働」にして「 OK 」を押します。

![WS000060.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/e5439c94-716b-9cce-d8a4-fea369b34137.jpeg "カレンダ編集_8")

これで、「 15:00 ～ 15:30 の間はジョブが稼働できる」という設定になりました。

![WS000072.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/185db71f-abcd-a7c3-2825-996446c4d69e.jpeg "カレンダ編集_9")

さらに「追加」ボタンを押して、今度は開始時刻を「 15:10:00 」、終了時刻を「 15:20:00 」にし、稼働非稼働を「非稼働」にして「 OK 」を押します。

![WS000073.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/eb63164b-6184-f37b-0c65-3c2fccf359a3.jpeg "カレンダ編集_10")

![WS000074.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/ad66506d-9a1e-dba9-f162-aef768135b6a.jpeg "カレンダ編集_11")

![WS000075.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/15358460-de6a-6fc3-47ea-10eee495ac56.jpeg "カレンダ編集_12")

カレンダの設定は順序が上の設定ほど優先されるので、後に追加した設定を選択した状態で「上へ」ボタンを押し、設定の順序を入れ替えます。

![WS000079.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/5513acdf-8c5f-7c04-75e8-bd556288c075.jpeg "カレンダ編集_13")

![WS000076.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/3c9c156a-925b-91a3-4b6c-60fee2309cb3.jpeg "カレンダ編集_14")

![WS000078.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/b41ef7e9-80f4-7ff4-ff25-37089cc0d80c.jpeg "カレンダ編集_15")

これで、「 15:00 ～ 15:10 、 15:20 ～ 15:30 の間はジョブが稼働できる」という設定になりました。

![WS000080.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/ff4f4b43-5880-0cfc-b64f-1e4b5ae367e8.jpeg "カレンダ編集_16")

最後にもう一度「追加」ボタンを押して、今度は開始時刻を「 15:12:00 」、終了時刻を「 15:15:00 」にし、稼働非稼働を「稼働」にして「 OK 」を押します。
そしてその設定を「上へ」ボタンで一番上に持ってきます。

![WS000081.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/32fd2104-b886-d166-39f5-80449f6da1c3.jpeg "カレンダ編集_17")

![WS000082.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/06b8ebc4-c31a-c23a-cf1e-25be12de4857.jpeg "カレンダ編集_18")

![WS000083.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/aae41426-1428-7f1a-4fcf-64f4674f43e5.jpeg "カレンダ編集_19")

![WS000084.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/a42569cf-212c-5bb7-6fa9-9ffeac04e470.jpeg "カレンダ編集_20")

![WS000086.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/d2358fbc-592a-3182-058c-bcd7ebd98f40.jpeg "カレンダ編集_21")

これで、「 15:00 ～ 15:10 、 15:12 ～ 15:15 、 15:20 ～ 15:30 の間はジョブが稼働できる」という設定になりました。

![WS000087.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/faf9fde1-b1a2-cec2-4d46-cf645a381bed.jpeg "カレンダ編集_22")

「 OK 」を押してこの設定を保存します。

![WS000061 - コピー.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/e43f65a7-ed2f-6f1e-a091-123163eea928.jpeg "カレンダ編集_23")

確認メッセージが出たら「 OK 」を押します。

![WS000062.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/c209b58b-aaee-c588-eeb3-0f67b0dce1dd.jpeg "カレンダ編集_24")

これでカレンダが作成できました。

左上パネル「カレンダ[一覧]」からカレンダを選択することで右上パネル「カレンダ[月間予定]」に起動スケジュールが表示され、さらにそこから日付をクリックすることで下パネル「カレンダ[週間予定]」にも起動スケジュールが可視化されます。

![WS000088.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/66729462-b5ee-93b5-0db1-80f04ae0f5eb.jpeg "カレンダ編集_25")

### 2. スケジュール設定

さて、次に作成したカレンダをジョブに適用していきます。
今回ジョブは以下の過去記事で作成したものを使用しました。

★

まずは通常通り「スケジュール作成」ボタンを押します。

![WS000089.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/6b393d0f-1529-1f57-925c-0d72c35ce486.jpeg "スケジュール設定_1")

実行契機 ID を「 `schedule_test` 」、実行契機名を「スケジュール_テスト」、ジョブ ID を「 `job_test` 」にし、スケジュール設定を「毎時 00 分から 01 分ごとに繰り返し実行」にします。

![WS000067.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/760b8eaf-f4b2-88b7-3c89-35c5702d9c2b.jpeg "スケジュール設定_2")

ここでいよいよカレンダの登場です。
カレンダ ID から先ほど作成したカレンダを選択します。

![WS000068.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/c2769a64-7221-09e2-0040-3acff3fe3ee8.jpeg "スケジュール設定_3")

これで、設定したジョブはカレンダで「稼働」に設定した期間のみ動作するようになります。

「 登録 」を押して、スケジュールを保存します。

![WS000090.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/cbf0dab8-f357-58eb-1747-a1804d3e2a9f.jpeg "スケジュール設定_4")

確認メッセージが出るので、「 OK 」を押します。

![WS000069.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/a87d6ab4-9047-8caf-7076-544e237530dc.jpeg "スケジュール設定_5")

これで、カレンダを用いたスケジュールが設定できました。

![WS000070.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/97f3267f-dfc0-800f-223c-34bd5a3600d8.jpeg "スケジュール設定_6")

### 3. 確認

実際にジョブの動作を待って結果を確認してみると、カレンダで設定した日時の期間だけジョブが動作しているとわかります。

![WS000071.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/219258c6-f09b-d7c8-7cb7-9d0b2afe536e.jpeg "確認")

```
[root@testhost ~]# ls -l /tmp/test.log
-rw-r--r-- 1 root root 989  2月  4 15:29 /tmp/test.log
[root@testhost ~]# cat /tmp/test.log
2024年  2月  4日 日曜日 15:00:01 JST
2024年  2月  4日 日曜日 15:01:01 JST
2024年  2月  4日 日曜日 15:02:01 JST
2024年  2月  4日 日曜日 15:03:01 JST
2024年  2月  4日 日曜日 15:04:01 JST
2024年  2月  4日 日曜日 15:05:01 JST
2024年  2月  4日 日曜日 15:06:01 JST
2024年  2月  4日 日曜日 15:07:01 JST
2024年  2月  4日 日曜日 15:08:01 JST
2024年  2月  4日 日曜日 15:09:01 JST
2024年  2月  4日 日曜日 15:12:01 JST
2024年  2月  4日 日曜日 15:13:01 JST
2024年  2月  4日 日曜日 15:14:01 JST
2024年  2月  4日 日曜日 15:20:01 JST
2024年  2月  4日 日曜日 15:21:01 JST
2024年  2月  4日 日曜日 15:22:01 JST
2024年  2月  4日 日曜日 15:23:01 JST
2024年  2月  4日 日曜日 15:24:01 JST
2024年  2月  4日 日曜日 15:25:01 JST
2024年  2月  4日 日曜日 15:26:01 JST
2024年  2月  4日 日曜日 15:27:01 JST
2024年  2月  4日 日曜日 15:28:01 JST
2024年  2月  4日 日曜日 15:29:01 JST
[root@testhost ~]#
```