ラズパイでsupervisorを動かしてデーモン化

ラズパイの起動時に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件)

コメントする

目次
閉じる