長いスクリプトをずっと回していたい時がある。例えば以下のように、ずっと起動しっぱなしにしたいスクリプト。
script.rb
while true do
# ここで何か処理
sleep(10) # 10秒おきに
end
ただ、rubyが何かの例外でとまっちゃうと処理が終わっちゃう。プロセスIDを監視して再起動って手も有るけど、大げさ。
そこで、処理が中断したら、もう一回起動するように、シェルスクリプトで覆ってあげればいい。
loop.sh
#!/bin/sh
while :
do
ruby script.rb
# ここで落ちちゃったよ!ってメールを送る
sleep 1s
done