WatchDogでプロセスを監視して、落ちたら自動で復帰させる
Linuxで特定のプロセスを監視して、万一そのプロセスが落ちてしまったとき、自動で復帰させるというはサーバで時折、使われる手段だと思います。
実は、Volumioのシステムの中でも同様のことをやっています。
ということで、有機ELディスプレイ表示のプログラムが何かしらの要因で落ちてしまったとき、なにくわぬ顔で復帰させてしまおう。 というのが今回のお話です。
本当は、どんな状況でもプロセスが落ちないようにプログラムしておくべきだとは思うのですが、こういう手段もあるってことで。。。 ご勘弁ください。
では、早速みてみましょう。
volumioでは下記のプログラム(WatchDog)でphpのプロセス数をカウントして、多すぎるときにプレーヤーソフト(player_wrk.php)を強制的にkillして再起動しています。
/var/www/command/player_wdog.sh
-------------------------------------------
numproc=`pgrep -c php5-fpm`
numproc2=`pgrep -c python`
WRKPIDFILE='/run/player_wrk.pid'
# check player_worker exec
if [[ !(-x "/var/www/command/player_wrk.php") ]]
then
chmod a+x /var/www/command/player_wrk.php
fi
while true
do
if (($numproc > 15)); then
killall player_wrk.php
rm $WRKPIDFILE > /dev/null 2>&1
service php5-fpm restart > /dev/null 2>&1
fi
if ! kill -0 `cat $WRKPIDFILE` > /dev/null 2>&1; then
rm $WRKPIDFILE > /dev/null 2>&1
if [ "$1" == "startup" ]; then
sleep 15
fi
/var/www/command/player_wrk.php > /dev/null 2>&1
fi
if(($numproc2 < 1)); then
/usr/bin/python2 /root/oled_ctrl2.py 2>&1
fi
sleep 10
numproc2=`pgrep -c python`
numproc=`pgrep -c php5-fpm`
done
-----------------------------------------------
ピンク文字が、今回追加させてもらった部分です。
pgrep -c というコマンドで、プロセス数をカウントしてます。
有機EL表示はpyhonで組んでいるので、そのプロセス数をみて、1以下、つまり「0」だったら、起動させるようにしました。 10秒おきに監視しているのが判りますね。
非常にシンプルで、わかりやすいプログラム(bash)だと思います。
似たようなことをしたいときに、参考にどうぞ。
ちなみに、有機EL表示プログラムが落ちる要因は、WebRadioが受信できなくてデータが取得できなくなったときや、NAS接続ができなくてmpcコマンドから正常な回答が得られないときがあるようです。 タイミング的な部分もあるようです。
他にもあるかもしれません。 ひとつひとつの動作を解析して、異常終了しないようなエラー処理を入れていくのが本当は良いのでしょうけど、今回のような手段で、まとめてエラー処理(再起動)してしまうという、手抜きもアリではないでしょうか。
にほんブログ村
ブログランキングに参加中です。 めざせ1位!
もしよろしければ「ぽちっと」お願いします。
« MOSFETを交流スイッチとして使う方法 | トップページ | アンプ基板が到着 »
「Raspberry Pi」カテゴリの記事
- 2022年版のRaspberry Pi OSではユーザー、パスワード設定が必須に(2022.05.05)
- あのオーディオデザインさんがラズパイオーディオを発売(2022.04.18)
- Volumio/MoodAudioに秋月電子のI2CタイプOLEDを接続して曲名などを表示するPython3版(2022.03.26)
- reTerminal(Raspberry Pi CM4)でMoodeAudioを動かそう(2022.02.20)
- MoodeAudio 7.3をPi4でUSB3.0接続SSDから起動する方法(2021.09.24)
お世話になります。
早速導入させていただいたところ落ちなくなりました。
正確には,落ちても復帰するようになりました。
pythonのcommands.getoutputをsubprocess.callにしてtimeoutで戻るようにしようとしていましたが,思い通りに行かなかったところだったので,本当に助かりました。
完成度の高いラズパイオーディオになりましたね。
投稿: fafa | 2015年11月29日 (日) 16時31分
いつもお世話になります。
忙しくてなかなかセットアップできませんでしたが、やっと完成しました。いや~、いい音ですねえ。ES9018K2Mの音が暖色系とすれば、ES9023は寒色系といいますか、すっきりしたシャープな音でしょうか。どちらも素晴らしい音ですが。
ただ、惜しむらくは、無音の所で僅かにノイズが聞こえることでしょうか。これは、SW電源のせいかな?Sabreberry+基板には一切電解コンデンサは使用されていませんが、「どうぞ改造してください」とでも言うように、幾つかの穴が用意されていますね。^^ これから、いろいろといじってみます。
OLEDが落ちる件は、早速体験しました。また、タイミング良く、上記の記事が上がってます! 早速導入させていただきました所、確かに落ちなくなりました。ありがとうございます。
現在、リモコンのセッティングでトラブってます。何度やっても、lirc_rpiが組み込まれません(config.txtとmodulesに行は追加されてるのを確認しました)。リモコン設定を解説いただいている記事では、IRセンサーが17番のGPIOに接続されていますが、現在の位置は、24番ですから、modulesの追記は以下のようになりますよね。
echo "lirc_rpi gpio_in_pin=2 gpio_out_pin=24" >> /etc/modules
今日はもうめげましたので、明日、再トライしてみます。^^;
投稿: kontiki | 2015年11月29日 (日) 22時13分
昨日の続報です。
echoの後の文が間違ってました。正しくは、
echo "lirc_rpi gpio_in_pin=24" >> /etc/modules
じゃないとダメですね。lirc_rpiは組み込まれましたが、その後ストを起こし、計3度くらいSDカードに書き直しました。^^; どうも安定しないですね・・・
現在、lircの学習をさせようとしているのですが、
mode2 -d /dev/lirc0
を打っても何もテキストが出てきません。適当なリモコンのボタンを押すと改行はされるので、何か信号は受け取っているようです。
これはムズですねえ・・^^; また、トライしてみます。
昨日の音の印象は、ヘッドフォンによるものでしたが、今日はIRberryDACを搭載しているミニアンプに入力して聞いてみました。これは、もしかして、IRberryDACの音を上回っている?? 音の鮮度が1段上を行っている感じです。また、OLEDに曲名が流れるのが、なんとも言えずクールですね。耳でも目でも楽しめます。素晴らしい基板の領布と、クールな外観を格安で実現できるアイディアの数々、本当にありがとうございました。
投稿: kontiki | 2015年11月30日 (月) 21時03分
fafa さん
さすがです。 のちほどバイナリデータの方も更新しようと思います。
kontiki さん
そうです。 "lirc_rpi gpio_in_pin=24"です。 echoで編集を何度もすると、どんどん追加されていくので、テキストエディタ(nano)で確認したほうが良いと思います。
ノイズに関しては、電源による部分が大きいと思います。 特にスイッチング電源はピンキリで、3Aや4Aと電流が大きいものはノイズレベルが高かったりするものがあるので要注意です。
ES9023の音は最初は少し硬めですが、1週間くらいたつと少しこなれてきます。 PCM5102Aの傾向と違う部分がありますね。 聴くソースにもよると思いますが、ES9023の方が録音の差をよく出すように感じています。 録音の粗がでてしまう恐いDAC-ICです。
投稿: たかじん | 2015年11月30日 (月) 22時18分
こんばんは。いつも有用な情報、便利なH/Wをありがとうございます。
一式組み上げ、MoOde Audio 2.4で稼働させています。
リモコンですが、試行錯誤した挙句
== /boot/config.txt ==
dtoverlay=lirc-rpi
dtparam=gpio_in_pin=24
== /etc/modules ==
lirc_rpi
をそれぞれ追加で動きました。リモコンはsparkfun COM-11759。
OLEDの方は焼き付きが怖いのでSTOP時は空白表示に変更しました。
WatchDogも早速追加。まったく同じscriptなので、そのまま使えます。
以上、MoOdeユーザーの方の参考になれば。
投稿: h.imagine | 2015年12月 1日 (火) 00時42分
h.imagine さん
こちらこそありがとうございます。
MoOdeでも、リモコンが使えるのですね。 素晴らしい情報ありがとうございます。
sparkfun COM-11759も、調べてみると千石電商で売っているようですね。
以前、似たような小型リモコンをaitendoで購入したのですが、赤外線の信号品質が良くなくて記憶させる作業が難航しました。 Lircは、リモコン側に左右される部分があるので使いこなしが難しいですね。
投稿: たかじん | 2015年12月 1日 (火) 22時44分
たかじんさん
レスいただき、ありがとうございます。
ビンゴです・・・ 今回、3AのSW電源を使ってます。余裕のある電源を奢ったつもりでしたが、逆効果でしたか・・・ LCフィルタでなんとかならないか試してみます。
音は次第にほぐれてきた感じです。しかし、最初持った「正確な音」という印象は、そのままです。何もない所に、音像がスッと浮かぶ感じは何とも言えない快感です。DAC-ICによって本当に違いますねえ。DACの進歩は著しく、少し前に自作で流行ったPCM2704などは、今出して聞くとエッという感じです・・・
投稿: kontiki | 2015年12月 1日 (火) 22時49分
kontiki さん
スイッチング電源は、価格が高ければノイズが低いとも限らないので、どれを買うか難しいですね。 フィルタを入れることで多少はノイズが減る可能性はあります。
https://nw-electric.way-nifty.com/blog/2015/01/raspberrypi-bda.html
電解コンデンサについては、こちらの記事をご覧ください。
PCM2704シリーズは、お手軽なUSB-DACですね。 特性の割に音は悪くないと思いますが、-60dBの信号を入れてオシロで見てはいけません。
投稿: たかじん | 2015年12月 2日 (水) 21時59分
たかじんさん
いつもお世話かけます。m__m
たかじんさんのHPはいつもチェックしているつもりでしたが、忙しくてチェックできなかった箇所がたまにあります。大事な情報が出ているページを見逃してました~ 記事の再紹介、ありがとうございます。貴重な情報、満載ですね! 役に立ちます!
ちなみに、今回のSW電源は、秋月のGF18-US0530-Tです。全く仰る通りで、価格が高ければ良いというものではないですね。トホホです。
ところで、こんな記事が出てますね。
「ラズパイ・オーディオでアップサンプリング! CD音源を変換して高音質再生」
http://www.phileweb.com/review/article/201512/02/1888.html
具体的な音質に関する記述はないですが、どうなんでしょうね。ラズパイ2になって、いろんな事ができるようななったのは確かです。
投稿: kontiki | 2015年12月 2日 (水) 23時40分
追記です。レス終了前に送信ボタン押してしまいました。
PCM2704は、セルフ電源+LPF追加で随分遊びましたが、今聴くと、そもそもの音が・・・ オシロがないので判りませんが、ノイズフロアが高いのですね。比べると、その差が歴然です。
投稿: kontiki | 2015年12月 2日 (水) 23時53分
kontiki さん
秋月のアダプタで電流の大きなもの、私も買って失敗したことあります。 12V品だったので型番は違いますが、沢山電流を流せるタイプで、少ししか電流を使わないと、間欠動作モードになってしまい、1秒に数回、ON/OFFを繰り返すような動作で、非常に大きなノイズを発していました。
DCアダプタ選びは、なかなか難しいですね。
PCM2704も、それだけを聴いていると大丈夫なのですが、中級クラス以上のDACと聞き比べてしまうと、その後、使う気がしなくなってしまいますね。 恐ろしいことだと思います。
投稿: たかじん | 2015年12月 4日 (金) 23時29分
>PCM2704も、
AKI.DACをライントランス出力であれこれしたのが遠い昔の様に感じますね。
投稿: CR-X | 2015年12月 5日 (土) 04時09分
CR-Xさん
> あれこれしたのが遠い昔の様に感じますね。
たしかに。 あれはあれで楽しかったのですが。
投稿: たかじん | 2015年12月 5日 (土) 12時44分
ノイズの件、続報です。
その後、電源系統など、いろいろいじってみましたが、無音時に聞こえる僅かなノイズがなかなか消えません。スピーカーで聞く分には環境音に消され、全く気にならないのですが、HPAでは結構気になります。
もしかしてと思い、VolumioのMenu-Playback-MPD configurationのVolume control mixer設定をsoftwareからdisabledにした所(この際にvolumeは100%になるのでご注意)、完全にノイズが消えました。それどころか、非常に音の見通しが良くなり、音の質が完全に別物になります。Volumioは、software volumeを用いIRリモコンで音量設定ができるので便利ですが、これだけ音が違うと・・・ これは僕の環境だけで起こる現象でしょうか? どなたか試してみていただけると助かります。
その後、Sabreberry+にOSコンを追加し、「すんばらしい」音を堪能してます。これは将にHi-Fiですね。^^
投稿: kontiki | 2015年12月 5日 (土) 22時48分
kontikiさん
ボリュームコントロールをdisabledにするというのは、効果あるかもしれませんね。
ついつい便利なのでsoftware Volumeを使っていましたが、MPD内部でボリュームをバイパスするようなら、変化があってもおかしくありません。
投稿: たかじん | 2015年12月 8日 (火) 23時21分