ethOS自動再起動・監視作業を効率化2|YUJI HOSAKA BLOG
- 2017/12/16
- マイニング

先日、前回のやり方で監視するのは微妙な部分があるということ、jsonを使ったほうがいいんじゃないかということにも触れましたね。
そこで、第2弾でいろいろやってみまたのでご紹介させていただきます。
以前のやり方とは違い、このRIG状況の値から動きをチェックすることにしました。
どの値を監視するかということですが、ここではRIGの状態を表示している「a」の部分を監視することにしました。
ここは正常にマイニングされていると何も表示されていませんが、値としては「mining」の値を持っています。
では、いよいよどうするかということですが、
【事前準備】
1.rig_reboot.shというファイルを作成します。←RIGの状態を監視し、再起動するためのファイル
※ファイル名はなんでもよいのですがここでこのファイル名にしました。
ファイル作成にはethOSにあるテキストエディタ(Leafpad)やviコマンドなどで作成してください。
2.jqコマンドが使えるよう下記のコマンドでethOSにインストールする
sudo curl -o /usr/local/bin/jq -L https://github.com/stedolan/jq/releases/download/jq-1.5/jq-linux64 && sudo chmod +x /usr/local/bin/jq
【自動再起動のプログラム作成】
先ほど作ったrig_reboot.shに下記の内容を書き込んで保存します。
↓↓↓ここから↓↓↓
#!/bin/bash
#————————————
loop=1;
start_time=300s;
interval=60s;
wait_taime=5s;
good_rig1=”mining”;
good_rig2=”just_booted”;
jsondata=”http://*****.ethosdistro.com/?json=yes” ←*****はRIGを監視画面と同じものを入れる
#—起動後300秒待機—————–
for i in $loop
do
sleep $start_time ←ここで300秒待機する設定をしているのは起動してすぐはステータスが”mining”にならないためです。
done
#—RIGに異常が出るまで監視——-
while :
do
sleep $interval ←60秒毎に監視
json_response=$(curl -s $jsondata) ←APIからデータを抽出
rig_condition= echo $json_response | jq -r ‘.rigs .”*****” .condition’ ←必要な部分を抜き出す*****にはRIGネームを入れる
if [ “$rig_condition”=$good_rig1 ]; then
echo -n $rig_condition ←RGI状態を表示
elif [ “$rig_condition”=$good_rig2 ]; then
echo -n $rig_condition ←RGI状態を表示
else
echo -n $rig_condition ←RGI状態を表示
minestop ←RIGを停止させる
sleep $wait_time ←5秒待機
r ←再起動する
fi
done
ここまで記述したら保存します。
【ethOS起動時に自動実行するための設定をする】
起動後自動的にこのシェルスクリプトを実行するために同じフォルダ内(/home/ethos)にあるcustom.sh
/etc/rc.localにbash rig_reboot.shを書き加えます。
rc.localのパーミッションの関係で書き込みが出来なければ下記のコマンドでパーミッションを変更する
chmod 777 rc.local
これはセキュリティ的によくないとおもうので、あとから読み込み専用に変更したほうがよいでしょう。

ethOS自動再起動
あとは、再起動すれば自動監視、自動再起動されるようになるはずです。
もっと良い方法などあるかもしれませんが、私はプログラマーというわけでもないのでjsonからshellへの値の引き渡しなどがわからなかったためてこずってしまいましたが、お役に立てたらうれしいです。
質問などLINE@からも受付ています。