Select Your Language

免責事項

  • 本サイトの情報の利用、内容、サービスによって、利用者にいかなる損害、被害が生じても、著者は一切の責任を負いません。ユーザーご自身の責任においてご利用いただきますようお願いいたします。

    本サイトで頒布している基板およびキットは、技術者、またはそれに準ずる電気的知識をお持ちの電子工作ファンの方のためのものです。 一般のオーディオファンの方のためのものではありません。
    また、頒布基板およびキットは、いかなる条件でも動作を保証するものではございませんので、あらかじめご了承ください。

    電子工作では、火傷、感電、火災などの可能性があります。 十分に注意をして作業して下さい。

    営利目的のご使用は認めておりません。  記事の転載や、基板・キットの商用利用の方は、ご連絡ください。
    学生やサークルの学習目的でまとめてご購入する場合は特別なコースをご用意させていただきます。

スポンサー

« MOSFETを交流スイッチとして使う方法 | トップページ | アンプ基板が到着 »

2015年11月28日 (土)

WatchDogでプロセスを監視して、落ちたら自動で復帰させる

Linuxで特定のプロセスを監視して、万一そのプロセスが落ちてしまったとき、自動で復帰させるというはサーバで時折、使われる手段だと思います。 

 

Watchdog01  

 

実は、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コマンドから正常な回答が得られないときがあるようです。 タイミング的な部分もあるようです。 

他にもあるかもしれません。 ひとつひとつの動作を解析して、異常終了しないようなエラー処理を入れていくのが本当は良いのでしょうけど、今回のような手段で、まとめてエラー処理(再起動)してしまうという、手抜きもアリではないでしょうか。 

 

 

にほんブログ村 PC家電ブログ PCオーディオへ にほんブログ村
ブログランキングに参加中です。 めざせ1位! 
もしよろしければ「ぽちっと」お願いします。 



« MOSFETを交流スイッチとして使う方法 | トップページ | アンプ基板が到着 »

Raspberry Pi」カテゴリの記事

コメント

お世話になります。

早速導入させていただいたところ落ちなくなりました。
正確には,落ちても復帰するようになりました。

pythonのcommands.getoutputをsubprocess.callにしてtimeoutで戻るようにしようとしていましたが,思い通りに行かなかったところだったので,本当に助かりました。

完成度の高いラズパイオーディオになりましたね。

いつもお世話になります。
忙しくてなかなかセットアップできませんでしたが、やっと完成しました。いや~、いい音ですねえ。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
今日はもうめげましたので、明日、再トライしてみます。^^;

昨日の続報です。
echoの後の文が間違ってました。正しくは、
echo "lirc_rpi gpio_in_pin=24" >> /etc/modules
じゃないとダメですね。lirc_rpiは組み込まれましたが、その後ストを起こし、計3度くらいSDカードに書き直しました。^^; どうも安定しないですね・・・
現在、lircの学習をさせようとしているのですが、
mode2 -d /dev/lirc0
を打っても何もテキストが出てきません。適当なリモコンのボタンを押すと改行はされるので、何か信号は受け取っているようです。
これはムズですねえ・・^^; また、トライしてみます。

昨日の音の印象は、ヘッドフォンによるものでしたが、今日はIRberryDACを搭載しているミニアンプに入力して聞いてみました。これは、もしかして、IRberryDACの音を上回っている?? 音の鮮度が1段上を行っている感じです。また、OLEDに曲名が流れるのが、なんとも言えずクールですね。耳でも目でも楽しめます。素晴らしい基板の領布と、クールな外観を格安で実現できるアイディアの数々、本当にありがとうございました。

fafa さん

さすがです。 のちほどバイナリデータの方も更新しようと思います。

kontiki さん

そうです。 "lirc_rpi gpio_in_pin=24"です。 echoで編集を何度もすると、どんどん追加されていくので、テキストエディタ(nano)で確認したほうが良いと思います。

ノイズに関しては、電源による部分が大きいと思います。 特にスイッチング電源はピンキリで、3Aや4Aと電流が大きいものはノイズレベルが高かったりするものがあるので要注意です。 

ES9023の音は最初は少し硬めですが、1週間くらいたつと少しこなれてきます。 PCM5102Aの傾向と違う部分がありますね。 聴くソースにもよると思いますが、ES9023の方が録音の差をよく出すように感じています。 録音の粗がでてしまう恐いDAC-ICです。 

こんばんは。いつも有用な情報、便利な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 さん

こちらこそありがとうございます。
MoOdeでも、リモコンが使えるのですね。 素晴らしい情報ありがとうございます。

sparkfun COM-11759も、調べてみると千石電商で売っているようですね。 

以前、似たような小型リモコンをaitendoで購入したのですが、赤外線の信号品質が良くなくて記憶させる作業が難航しました。 Lircは、リモコン側に左右される部分があるので使いこなしが難しいですね。

たかじんさん
レスいただき、ありがとうございます。
ビンゴです・・・ 今回、3AのSW電源を使ってます。余裕のある電源を奢ったつもりでしたが、逆効果でしたか・・・ LCフィルタでなんとかならないか試してみます。
音は次第にほぐれてきた感じです。しかし、最初持った「正確な音」という印象は、そのままです。何もない所に、音像がスッと浮かぶ感じは何とも言えない快感です。DAC-ICによって本当に違いますねえ。DACの進歩は著しく、少し前に自作で流行ったPCM2704などは、今出して聞くとエッという感じです・・・

kontiki さん

スイッチング電源は、価格が高ければノイズが低いとも限らないので、どれを買うか難しいですね。 フィルタを入れることで多少はノイズが減る可能性はあります。 

http://nw-electric.way-nifty.com/blog/2015/01/raspberrypi-bda.html
電解コンデンサについては、こちらの記事をご覧ください。

PCM2704シリーズは、お手軽なUSB-DACですね。 特性の割に音は悪くないと思いますが、-60dBの信号を入れてオシロで見てはいけません。 

たかじんさん
いつもお世話かけます。m__m
たかじんさんのHPはいつもチェックしているつもりでしたが、忙しくてチェックできなかった箇所がたまにあります。大事な情報が出ているページを見逃してました~ 記事の再紹介、ありがとうございます。貴重な情報、満載ですね! 役に立ちます!

ちなみに、今回のSW電源は、秋月のGF18-US0530-Tです。全く仰る通りで、価格が高ければ良いというものではないですね。トホホです。

ところで、こんな記事が出てますね。
「ラズパイ・オーディオでアップサンプリング! CD音源を変換して高音質再生」
http://www.phileweb.com/review/article/201512/02/1888.html
具体的な音質に関する記述はないですが、どうなんでしょうね。ラズパイ2になって、いろんな事ができるようななったのは確かです。

追記です。レス終了前に送信ボタン押してしまいました。
PCM2704は、セルフ電源+LPF追加で随分遊びましたが、今聴くと、そもそもの音が・・・ オシロがないので判りませんが、ノイズフロアが高いのですね。比べると、その差が歴然です。

kontiki さん

秋月のアダプタで電流の大きなもの、私も買って失敗したことあります。 12V品だったので型番は違いますが、沢山電流を流せるタイプで、少ししか電流を使わないと、間欠動作モードになってしまい、1秒に数回、ON/OFFを繰り返すような動作で、非常に大きなノイズを発していました。

DCアダプタ選びは、なかなか難しいですね。

PCM2704も、それだけを聴いていると大丈夫なのですが、中級クラス以上のDACと聞き比べてしまうと、その後、使う気がしなくなってしまいますね。 恐ろしいことだと思います。

>PCM2704も、
AKI.DACをライントランス出力であれこれしたのが遠い昔の様に感じますね。

CR-Xさん

> あれこれしたのが遠い昔の様に感じますね。
たしかに。  あれはあれで楽しかったのですが。 

ノイズの件、続報です。
その後、電源系統など、いろいろいじってみましたが、無音時に聞こえる僅かなノイズがなかなか消えません。スピーカーで聞く分には環境音に消され、全く気にならないのですが、HPAでは結構気になります。
もしかしてと思い、VolumioのMenu-Playback-MPD configurationのVolume control mixer設定をsoftwareからdisabledにした所(この際にvolumeは100%になるのでご注意)、完全にノイズが消えました。それどころか、非常に音の見通しが良くなり、音の質が完全に別物になります。Volumioは、software volumeを用いIRリモコンで音量設定ができるので便利ですが、これだけ音が違うと・・・ これは僕の環境だけで起こる現象でしょうか? どなたか試してみていただけると助かります。
その後、Sabreberry+にOSコンを追加し、「すんばらしい」音を堪能してます。これは将にHi-Fiですね。^^

kontikiさん

ボリュームコントロールをdisabledにするというのは、効果あるかもしれませんね。 
ついつい便利なのでsoftware Volumeを使っていましたが、MPD内部でボリュームをバイパスするようなら、変化があってもおかしくありません。

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/587107/62768344

この記事へのトラックバック一覧です: WatchDogでプロセスを監視して、落ちたら自動で復帰させる:

« MOSFETを交流スイッチとして使う方法 | トップページ | アンプ基板が到着 »

サイト内検索

Sponsors link

2017年8月
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    

最近のトラックバック

無料ブログはココログ