以前の記事にも書いたとおりBaikal Giant Nは一定時間過ぎるとWeb GUI/SShともにアクセスできなくなります(1)。さらにAEONを採掘しているとRejectが頻発したときにマイニングプールから切り離されてしまいます(2)。
これらの問題のうち(1)はBaikal Miner社がファームウェアの改善をしない限りどうしようもありません。
(2)はログインさえできればsgminerをリスタート(minerメニューにある)することでreject件数をリセットしてマイニングプールに再接続することができます。
そこでsgminerを一定時間おきにリスタートするシェルスクリプトを作りました。もっとスマートにやる方法もあるかとは思いますがLinuxはあまり得意ではないのでこれで勘弁してください。また、これで別なトラブルが引き起こされたとしても責任はとれませんのでご了承ください。
root 4105 1 0 22:06 ? 00:00:00 /usr/bin/SCREEN -dmS sgminer /opt/scripta/bin/sgminer -c /op
root 4106 4105 17 22:06 pts/2 00:01:18 /opt/scripta/bin/sgminer -c /opt/scripta/etc/miner.conf –ap
/opt/scripta配下が怪しいので調べるとすぐに見つかりました。
(1)スタートアップスクリプト:/opt/scripta/startup/miner-start.sh
(2)ストップスクリプト:/opt/scripta/startup/miner-stop.sh
1.でプロセス一覧を見るとwatchdogというものもいます。これはsgminerを監視しているプロセスで、sgminerが何らかの理由で死ぬとsgminerを起動するようにできています。
今回のシェルはwatchdogによる再起動を利用します。
while文を使った無限ループで4時間おきにsgminerを停止しています。sgminerを停止すると数秒~10秒程度でwatchdogが検知して再起動してくれます。4時間は長すぎるという場合は14400(秒)を適当な長さに変更してもいいと思います。
こうやって作ったシェルスクリプトのファイル(ここではcont.sh)に実行権限を与え、以下のコマンドで起動して後は放置すればいいです。
# nohup ./cont.sh &
nohupはログアウトするときにプロセスを停止させる信号を無視するものです。nohupで起動されたプログラムはsshをログアウトしても動き続けます。&はバックグラウンド実行です。
このあたりの言葉に慣れない方はググって調べてみてください。詳細な解説がいくらでもあります。