実施環境:
[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. 今回使用するジョブ
今回使用するジョブは、以下の通りです。
1.1. ジョブユニット
- ジョブ ID :
job_unit_00
- ジョブ名:ジョブユニット_00
1.2. ジョブネット
- ジョブ ID :
jobnet_00
- ジョブ名:ジョブネット_00
1.3. ジョブ
1.3.1. 1 番目のジョブ
- ジョブ ID :
job_01
- ジョブ名:ジョブ_01
- 起動コマンド:
echo "01" >> /tmp/00.log
1.3.2. 2 番目のジョブ
- ジョブ ID :
job_02
- ジョブ名:ジョブ_02
- 起動コマンド:
echo "02" >> /tmp/00.log
- 待ち条件 - 名前:ジョブ(終了状態)
- 待ち条件 - ジョブ ID :
job_01
- 待ち条件 - 値:正常
1.3.3. 3 番目のジョブ
- ジョブ ID :
job_03
- ジョブ名:ジョブ_03
- 起動コマンド:
test -f /tmp/00.txt
- 待ち条件 - 名前:ジョブ(終了状態)
- 待ち条件 - ジョブ ID :
job_02
- 待ち条件 - 値:正常
/tmp/00.txt
が無ければ、コマンドが戻り値「 1 」を返してこのジョブがエラー終了します。
(厳密には、デフォルトの設定だと戻り値「 1 」の場合の終了状態は「警告」という扱いになります。)
1.3.4. 4 番目のジョブ
- ジョブ ID :
job_04
- ジョブ名:ジョブ_04
- 起動コマンド:
echo "04" >> /tmp/00.log
- 待ち条件 - 名前:ジョブ(終了状態)
- 待ち条件 - ジョブ ID :
job_03
- 待ち条件 - 値:正常
1.3.5. 5 番目のジョブ
- ジョブ ID :
job_05
- ジョブ名:ジョブ_05
- 起動コマンド:
echo "05" >> /tmp/00.log
- 待ち条件 - 名前:ジョブ(終了状態)
- 待ち条件 - ジョブ ID :
job_04
- 待ち条件 - 値:正常
2. ジョブネットの定期実行を止める
定期的に起動するジョブネット全体について定期実行を止めるには、スケジュールを右クリックして「無効」を選択します。
これで、ジョブが定期的に起動されなくなりました。
もう一度右クリックして「有効」を押せば、元に戻せます。
ジョブネット全体について定期起動を止めたい場合は、後述の方法よりもこちらの方が手っ取り早いかと思います。
3. 一部のジョブをスキップする
ジョブネットの中の一部のジョブだけ実行せず、そのまま次のジョブを実行させるには、「制御(ジョブ)」タブの「スキップ」にチェックを入れ、「終了状態」を「正常」にします。
実際に実行してみると、「スキップ」にチェックを入れたジョブだけスキップされていることがわかります。
OS 側から見ても、「スキップ」にチェックを入れたジョブだけ実行されていないことがわかります。
[root@testhost tmp]# cat 00.log
01
02
05
[root@testhost tmp]#
長期間ジョブを動かさないようにしたい場合は、この設定が利用できるかと思います。
4. 一部のジョブを保留する
ジョブネットの中の一部のジョブだけ実行せず、さらにその時点でジョブネットの実行を一時停止するには、「制御(ジョブ)」タブの「保留」にチェックを入れます。
実際に実行してみると、「保留」にチェックを入れたジョブの時点でジョブネットが一時停止されていることがわかります。
保留中となっているジョブについて保留解除をすることで、保留していたジョブからジョブネットの実行を再開できます。
OS 側から見ると、保留解除したことできちんと最後までジョブネットが実行できていることがわかります。
[root@testhost tmp]# cat 00.log
01
02
04
05
[root@testhost tmp]#
短時間だけジョブを止めて、その後止めていたジョブを動かしたい場合は、こちらの方が便利かと思います。