モーダルを閉じる工作HardwareHub ロゴ画像

工作HardwareHubは、ロボット工作や電子工作に関する情報やモノが行き交うコミュニティサイトです。さらに詳しく

利用規約プライバシーポリシー に同意したうえでログインしてください。

プロセス管理システム supervisor の簡単な使い方

モーダルを閉じる

ステッカーを選択してください

お支払い手続きへ
モーダルを閉じる

お支払い内容をご確認ください

購入商品
」ステッカーの表示権
メッセージ
料金
(税込)
決済方法
GooglePayマーク
決済プラットフォーム
確認事項

利用規約をご確認のうえお支払いください

※カード情報はGoogleアカウント内に保存されます。本サイトやStripeには保存されません

※記事の執筆者は購入者のユーザー名を知ることができます

※購入後のキャンセルはできません

作成日作成日
2018/06/20
最終更新最終更新
2021/02/01
記事区分記事区分
一般公開

目次

    低レイヤーのプログラミングとOS開発が趣味。C言語を使っています。

    プロセスの死活監視等を行うためのデーモン化ツールの一つ supervisor の簡単な使い方を記載します。

    インストール

    apt や yum によってインストールする場合は以下のようになります。

    sudo apt install supervisor
    sudo yum install supervisor
    

    インストールされたファイルを確認]します。

    $ dpkg -L supervisor
    ...
    /usr/bin/supervisorctl
    /usr/bin/supervisord 
    /etc/supervisor/supervisord.conf
    /etc/init.d/supervisor
    

    二つのコマンドについては man も追加されています。

    man supervisord
    man supervisorctl
    

    supervisord の起動

    supervisord で管理するプログラムを追加するためには、こちらのドキュメントにしたがって設定ファイルを追加します。

    設定ファイル

    動きを確認するために、以下のような設定を追加してみます。

    chmod a+x /home/vagrant/myprog.bash
    

    /home/vagrant/myprog.bash

    #!/bin/bash
    
    while :; do
        echo "Hello, world!"
        sleep 1
    done
    

    /etc/supervisor/conf.d/myprog.conf

    [program:myprog]
    command=/home/vagrant/myprog.bash
    autostart=true
    autorestart=true
    stdout_logfile=/var/log/supervisor/myprog.log
    stderr_logfile=/var/log/supervisor/myprog-error.log
    user=vagrant
    directory=/home/vagrant/
    environment=
    

    起動

    管理するプロセスではなく supervisor 自身 (supervisord) の起動です。

    sudo /etc/init.d/supervisor start
    

    直接 supervisord を操作 (-nsupervisordデーモン化しない)

    sudo supervisord -c /etc/supervisor/supervisord.conf
    sudo supervisord -c /etc/supervisor/supervisord.conf -n
    

    既に supervisord が起動されている場合は以下のようなエラーが出ます。

    Another program is already listening on a port that one of our HTTP servers is configured to use.
    

    登録したプログラムのログが確認できます。

    $ tailf /var/log/supervisor/myprog.log
    Hello, world!
    Hello, world!
    Hello, world!
    Hello, world!
    ...
    

    supervisorctl による操作

    sudo supervisorctl {status|restart|stop|start} {all|myprog}
    

    リモートホストの supervisord を操作

    supervisord の設定ファイルで接続を許可するホストを設定できます。セキュリティ上問題はありますが、例えば以下のようにすると任意のホストからパスワードなしで接続できます。

    /etc/supervisor/supervisord.conf

    [inet_http_server]
    port = 0.0.0.0:9001
    

    接続する際は -s オプションでリモートホストを指定します

    supervisorctl -s http://xxx.xxx.xxx.xxx:9001 status
    
    Likeボタン(off)0
    詳細設定を開く/閉じる
    アカウント プロフィール画像

    低レイヤーのプログラミングとOS開発が趣味。C言語を使っています。

    記事の執筆者にステッカーを贈る

    有益な情報に対するお礼として、またはコメント欄における質問への返答に対するお礼として、 記事の読者は、執筆者に有料のステッカーを贈ることができます。

    >>さらに詳しくステッカーを贈る
    ステッカーを贈る コンセプト画像

    Feedbacks

    Feedbacks コンセプト画像

      ログインするとコメントを投稿できます。

      ログインする

      関連記事

      • 使い所が難しいマイナーな運用コマンド
        コマンドのエイリアスを登録する (update-alternatives) mybin という名前のコマンドを登録 sudo update-alternatives --install /usr/local/bin/mybin mybin /usr/bin/echo 10 sudo update-alternatives --install /usr/local/bin/mybin mybin /...
        けんちゃんけんちゃん11/1/2022に更新
        いいねアイコン画像0
      • ipコマンドの基本的な使い方
        ネットワーク関連のコマンドはたくさんあります。しかしながら、その一部は ip コマンドに集約できます。 基本形 ("man ip" より抜粋) $ ip OBJECT COMMAND OBJECT: link, neigh, addr, route (等) COMMAND: show, add, delete (等) データリンク層のネットワークデバイス情報 (ifconfigコマンドの代用) M...
        こもれびさんこもれびさん2/8/2017に更新
        いいねアイコン画像0
      • プロセス関連のコマンド
        サムネイル画像-7b5901f600
        プロセスID関連 (ps, pgrep, pkill) 全プロセスを表示するためには $ ps ax とすればよく、その表示を見やすくするためには "u" と "w" を追加して $ ps auxw とすればよいです。表示件数自体は同じです。そのうち特定のコマンドのプロセスIDだけを表示したい場合は $ ps ax | grep 'my_script' | grep -v grep | awk '...
        kenken11/27/2021に更新
        いいねアイコン画像0
      • rpmとyumのチートシート
        サムネイル画像-f69c6665b8
        rpm (RedHat Package Manager または RPM Package Manager) はRedHat系のパッケージ管理ツールで、yum (Yellowdog Updater Modified) は内部的にrpmを実行するメタパッケージ管理ツールです。rpmには柔軟性がありyumには利便性があります。 rpmは "rpmパッケージファイル" があれば何でもインストールできますが、...
        まるたんまるたん2/2/2022に更新
        いいねアイコン画像0
      • メモリおよびディスクリソースを調査するために便利なコマンドおよび周辺知識
        メモリ使用量を表示 (free) 既定ではキロバイト単位で表示されます。オプション "-b", "-k", "-m", "-g" を付与して実行するとそれぞれバイト、キロ、メガ、ギガで表示されます。 $ free total used free shared buffers cached Mem: 510824 ...
        しおまめしおまめ8/30/2017に更新
        いいねアイコン画像0