- 2025年2月14日
cronで分岐処理を作ることが最近あって
ネットにネタがあまりなかったで
ここに書いておきます。
通常分岐処理がしたい場合は
シェルの中で書いてしまえばいいので
あまりcronのスクリプト上で分岐処理(if文の感じ)したい
という要件は少ないでしょう。
しかし
私はこの必要があったので、ちょっと苦労しました。
LinuxでHAクラスタを組んだときに
稼働系の時だけシェルを叩いて欲しい
待機系の時にはシェルの部分はディスクが見えないので
シェルを叩いて欲しくない(エラーログが出るから)
という事情でした。
エラーログなんて出させておけばいい
というのが
許される環境であれば、気にもとめないのですが
あらゆるエラーログが検知され
理由を説明しないといけないような
なかなか大変な現場もあるわけですね。
そこで実行ホストが稼働系か、待機系かを
シェルを叩くまえに
cronでジャッジして
待機系の時は何もしないで、という感じです。
どんな感じで書くかというと
* * * * * root [ “$(hostname)” = “hogepc01” ] && sh /var/hoge/hoge.sh
上の例だと
hostnameコマンドの実行結果が = hogepc01 の場合のみ
/var/hoge/hoge.sh
を実行する、という感じです。
上記をカスタムして
ご自分の環境にマッチさせてみてください。