botを自動再起動させて、ほったらかし運用する

過去日記から抜粋して記事にした、自分用メモの抜粋なので記事は丁寧ではない。

更新:2018年8月28日

CCXT他、ネット経由でデータを取ってくる処理でエラー多発、しょっちゅうbotが停止するので自動再起動してくれるのを追加

以下、ubuntuでの設定です

supervisor version3

python2対応なのでpipではなく、apt install で、いれる。自動再起動させたいbotは、python3.4で記述している。

sudo apt install supervisor

注意点は .confファイル作成と、起動の仕方

デーモン起動はすんなりだが、その後の管理用プロセス起動にクセあり

親デーモンの起動

sudo service supervisor start

親デーモンの再起動

sudo service supervisor restart

状況確認

sudo service supervisor status

管理用デーモンの起動、コンフィグファイルの指定必須、なしだとエラーになる

supervisorctl -c /etc/supervisor/supervisord.conf

プロンプト表示に変わるので

status

稼働状況確認、稼働していれば、その旨とプロセス番号と稼働時間が表示される
稼働はユーザー指定しなければ、親デーモンと同じくrootで稼働する。

reread

新定義あればこれで読み込み、のみ。設定反映させるなら updateを使う。

start all

定義フォルダ(/etc/supervisor/conf.d)の中に記述してる.confファイルを読み込んで起動/再起動させる。同時起動になることに注意。

# 停止

stop 登録名

# 一括停止
stop all

# 再起動

restart 登録名

追加をしようとして次のエラーがでた

spawn error

ぐぐってわかったのは、起動したいプログラムのパスが見つからない

confファイル作成時に他に注意すべきなのは

1行目、[program:ラベル名前を変更]

2行目、起動パス

まんなかあたりの、ログファイル名

エラーログ等がたまるのはここ

/var/log/supervisor/

ユーザー定義ファイルに次の1文を追加。目的は子プロセスまで面倒を見る。orderbookLのアプリを動かすと子プロセスが4つ動く。この子プロセスは親がこけても残り、結果、親はゾンビプロセスになってしまって再起動が自動で行われない。これを回避したいので追加した。

stopasgroup = true

公式マニュアル

http://supervisord.org/running.html

参考サイト

追記:子プロセスまで制御する定義追加

https://qiita.com/yushin/items/15f4f90c5663710dbd56

http://monakaice88.hatenablog.com/entry/2017/02/01/071024

http://swfz.hatenablog.com/entry/2015/12/16/214435

https://qiita.com/shiraco/items/70c5d48a1b4f43fb4aa7#%E3%83%97%E3%83%AD%E3%82%BB%E3%82%B9%E3%81%AE%E8%B5%B7%E5%8B%95%E7%AE%A1%E7%90%86

管理用コマンド解説

http://papix.hatenablog.com/entry/2015/08/05/131113


チップはこちらからお願いします