ラズパイの起動時にpythonスクリプトを動かしたいなと思い、デーモン化を試みた。
supervisorを使えば非常に簡単に即効でデーモン化完了です。
導入までをまとめておく。
supervisorをインストール
$ sudo apt-get update
$ sudo apt-get install supervisor
導入はこれだけ。えっ?あっという間。
$ supervisord -v
3.0b2
versionが出力されれば準備完了。
supervisorの設定
supaervisorからプロセスを起動してデーモン化するには、 confファイルというものを作れば良い。
confファイルってなんやねん。どう書いたらいいの。
confファイルの書き方
以下のように記述すればオッケー。
[program:RaspDaemon] ;プロセス名
command=python3 /home/pi/work_room/RaspDaemon.py ;実行したいコマンド
process_name=RaspDaemon.py ;ステータスで表示するプロセス名
directory=/home/pi/work_room/ ;作業ディレクトリ
numprocs=1 ;起動インスタンス数
autostart=true ;自動起動する
;autorestart=true ;自動再起動する
user=pi ;起動ユーザー
redirect_stderr=true ; 標準エラーを出力する
stdout_logfile=/home/pi/work_room/RaspDaemon.log ; ログファイルの出力先
と、最低限書いておくべき設定を記述しました。
気をつけるべきところは,
コメントアウトは#
でも//
でもなく;
であることくらいですかね。
今回僕は起動時1回のプロセス起動で良いためautorestart=true
をコメントアウトしています。(;autorestart=true
...まぁコメントアウトではなくautorestart=false
でもいいんですけどね。)
他にもconfファイルで標準出力、エラー出力、出力先や異常終了判定等細かく記述できるので調べてみると面白そう。
confファイルの配置
さて、confファイルの記述が終わったら/etc/supervisor/conf.d/
にconfファイルを配置します。
これで準備完了です。
プロセスの起動と管理
confファイルを記述し配置したら再起動を行います。
起動時にconfファイルで記述したコマンドが実行されていると思います。
僕の場合はpythonのスクリプトが実行されていました。
サーバーとして常時起動する場合daemon化は非常に便利ですね。
デーモンのプロセス状態を確認するには
$ sudo supervisorctl status
RaspDaemon RUNNING pid 3319, uptime 0:24:12
autorestart=true
とconfファイルに記述しておけば、プロセスが不慮の終了をした場合でも即再起動させてくれます。常時起動が実現可能です。
デーモンを止めたり、動かしたり
$ sudo supervisorctl stop RaspDaemon #停止
$ sudo supervisorctl start RaspDaemon #起動
$ sudo supervisorctl restart RaspDaemon #再起動
プロセス名はconfファイルのprocess_name
で記述した名前となります。
(ちなみに僕の場合はRaspDaemon)
コメント
コメント一覧 (1件)
[…] […]