Linuxでスーパーバイザーを自動的に起動する方法(Ubuntu)


38

Supervisordにはinitスクリプトが付属していないか、自動的に起動する方法が示されていません。再起動後。ユーザーが作成した/etc/init.dスクリプトをいくつか試しましたが、すべて失敗します。

望ましい解決策は何ですか?


「失敗」とはどういう意味ですか?ところで この質問はserverfaultに属しているようです。
erenon 09

Debian安定版にはinitスクリプトが機能しているので、この質問は時代遅れだと思います。

回答:


40

実際に、ここで動作するものをhttp://gist.github.com/176149で見つけました。それをインストールするには:

sudo curl https://gist.github.com/howthebodyworks/176149/raw/88d0d68c4af22a7474ad1d011659ea2d27e35b8d/supervisord.sh > /etc/init.d/supervisord

それを実行する

sudo chmod +x /etc/init.d/supervisord

自動的にスケジュールを設定するには

sudo update-rc.d supervisord defaults

/etc/init.d/supervisordにマッピングされている/etc/supervisord.confの正しいpidを確認してください。

example: pidfile=/var/run/supervisord.pid

停止と開始が適切に機能する

service supervisord stop
service supervisord start

これはDebian固有ですか?Centos6.5ボックスに/lib/init/vars.shとupdate-rc.dがない
EoghanM

1
Supervisord.confの場所をどのようにして知ることができますか?
ウェイウェイ

1
私はそれだけでDebianのスクイズレポからsupervisordをインストールするには、はるかに簡単だった-やっ適性インストールsupervisordが正しいリンクと/etc/init.dのファイルの設定、およびプット/etc/supervisor/supervisord.confのconfigファイルを含んでいます
RichVel

2
@RichVelこれはアルファ版であり、多くのバグがあります。それらのほとんどはシステムに影響を与えないかもしれませんが、あなたは確信が持てません。そして、最新のリリースを持っていないと、どんな瞬間でもあなたを噛むことができます。ソースリポジトリを確認すると、バージョン3.0a8と3.0b2の間で320を超えるコミットがあることがわかります。github.com/ Supervisor /
glarrain

1
@glarrain-ヘッズアップと比較リンクに感謝します...気づきませんでした-Debianパッケージャーがアルファリリースをとったことをいらいらさせます。確かにDebian安定版のポイントは、実績のあるバージョンのみを使用することです
...-RichVel

13

私はubuntu 9.10のスタートアップスクリプトを作成しました

たとえば、スーパーバイザーを仮想環境にインストールしてから、スーパーバイザーを起動してスーパーバイザーを制御します。

テキストファイル/etc/init/supervisord.confを作成します

内容は次のとおりです。

description     "supervisord"

start on runlevel [345]
stop on runlevel [!345]

expect fork
respawn

exec /misc/home/bkc/Python_Environments/java2/supervisord/bin/supervisord -c /misc/home/bkc/Python_Environments/java2/supervisord/work/supervisord.conf

起動時にスーパーバイザーを自動的に起動します。.confファイルの作成後に手動で開始するには、次を使用します

sudo start Supervisord

サービスを手動で停止するには、次を使用します

sudo stop Supervisord


2
ありがとう!ワンライナーは次のとおりcurl -L https://gist.github.com/raw/1213031/929e578faae2ad3bcb29b03d116bcb09e1932221/sup‌​ervisord.conf > /etc/init/supervisord.conf && start supervisordです:(rootになる必要があります)
charlax

3
実行する前に、必ず要点ワンライナーを確認してください。これは問題ありませんが、そのヒントを追加したかっただけです。
コリーウォーカー

12

これは、RHEL 5.4およびCentOS 5.5で使用するものです

Supervisord.confのいくつかの構成設定に依存するかどうかはわかりません。しかし、うまくいくようです。

インストール後に次のコマンドを実行する必要があります

chkconfig --add supervisord

[/etc/rc.d/init.d/supervisord]

#!/bin/sh
#
# /etc/rc.d/init.d/supervisord
#
# Supervisor is a client/server system that
# allows its users to monitor and control a
# number of processes on UNIX-like operating
# systems.
#
# chkconfig: - 64 36
# description: Supervisor Server
# processname: supervisord

# Source init functions
. /etc/rc.d/init.d/functions

prog="supervisord"

prefix="/usr/"
exec_prefix="${prefix}"
prog_bin="${exec_prefix}/bin/supervisord"
PIDFILE="/var/run/$prog.pid"

start()
{
        echo -n $"Starting $prog: "
        daemon $prog_bin --pidfile $PIDFILE
        [ -f $PIDFILE ] && success $"$prog startup" || failure $"$prog startup"
        echo
}

stop()
{
        echo -n $"Shutting down $prog: "
        [ -f $PIDFILE ] && killproc $prog || success $"$prog shutdown"
        echo
}

case "$1" in

  start)
    start
  ;;

  stop)
    stop
  ;;

  status)
        status $prog
  ;;

  restart)
    stop
    start
  ;;

  *)
    echo "Usage: $0 {start|stop|restart|status}"
  ;;

esac

実行する前に+ x権限を追加する必要があることだけを追加します:chmod + x /etc/init.d/supervisord
JiminyCricket

実行後はchkconfig --add supervisord、次の方法で異なる実行レベルに対しても有効にする必要があることを忘れないでくださいchkconfig supervisord --level 345 on
Corey Ballou


2

これは、Ubuntu 10.04.3 LTSで機能しています。8.04でも動作するようです:

以下を追加します /etc/init.d/supervisord

#! /bin/bash -e

SUPERVISORD=/usr/local/bin/supervisord
PIDFILE=/tmp/supervisord.pid
OPTS="-c /etc/supervisord.conf"

test -x $SUPERVISORD || exit 0

. /lib/lsb/init-functions

export PATH="${PATH:+$PATH:}/usr/local/bin:/usr/sbin:/sbin"

case "$1" in
  start)
    log_begin_msg "Starting Supervisor daemon manager..."
    start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $SUPERVISORD -- $OPTS || log_end_msg 1
    log_end_msg 0
    ;;
  stop)
    log_begin_msg "Stopping Supervisor daemon manager..."
    start-stop-daemon --stop --quiet --oknodo --pidfile $PIDFILE || log_end_msg 1
    log_end_msg 0
    ;;

  restart|reload|force-reload)
    log_begin_msg "Restarting Supervisor daemon manager..."
    start-stop-daemon --stop --quiet --oknodo --retry 30 --pidfile $PIDFILE
    start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $SUPERVISORD -- $OPTS || log_end_msg 1
    log_end_msg 0
    ;;

  *)
    log_success_msg "Usage: /etc/init.d/supervisor
{start|stop|reload|force-reload|restart}"
    exit 1
esac

exit 0

次に実行します:

sudo chmod +x /etc/init.d/supervisord
sudo update-rc.d supervisord defaults

sudo service supervisord start

他の答えはどれも私にとってはうまくいきませんでした。


1

「停止」引数処理を修正するために、次の行を/etc/init.d/supervisordに追加しました。

do_stop()
{
    /usr/local/bin/supervisorctl stop all
    /usr/local/bin/supervisorctl shutdown
    # Return
    ...

そして、これは私にとって素晴らしい仕事です。


1

スーパーバイザーは現在aptリポジトリにあるように見えるため、initファイルを手動で作成する必要はありません。

sudo apt-get install supervisor

インストールする前に、まず古いファイルを消去(およびバックアップ)することをお勧めします。


「これらのパッケージの一部は、公式リリースバージョンよりかなり遅れることがあります。たとえば、Ubuntu 12.04(2012年4月リリース)は、Supervisor 3.0a8(2010年1月リリース)に基づくパッケージを提供します。」(Supervisordのドキュメントからsupervisord.org/...
glarrain
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.