Linux에서 자동으로 감독자를 시작하는 방법 (우분투)


38

Supervisord는 init 스크립트와 함께 제공되지 않거나 자동으로 시작하는 방법을 나타내지 않습니다. 재부팅 후. 사용자가 제공 한 /etc/init.d 스크립트를 시도했지만 모두 실패합니다.

선호되는 솔루션은 무엇입니까?


"실패"는 무엇을 의미합니까? btw; 이 질문은 serverfault에 속하는 것 같습니다.
erenon

데비안 스 테이블은 초기화 스크립트를 사용하고 있기 때문에이 질문은 구식이라고 생각합니다.

답변:


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

이것은 데비안 전용입니까? Centos6.5 상자에서 /lib/init/vars.sh 및 update-rc.d가 누락 됨
EoghanM

1
supervisord.conf의 위치를 ​​어떻게 알 수 있습니까? /supervisord.conf를 어디에 두어야합니까?
Weiwei

1
supervisord가 /etc/supervisor/supervisord.conf에서 링크 및 풋 설정 파일을 함께 /etc/init.d에 파일의 올바른 설치를 포함하는 설치 적성을 수행 - 난 그냥 데비안 스퀴즈의 repo에서 supervisord를 설치하는 것이 훨씬 쉬웠다 발견
RichVel

2
@RichVel 그것은 많은 버그가있는 알파 버전입니다. 어쩌면 그들 대부분은 시스템에 영향을 미치지 않지만 확실하지 않을 수 있으며 최신 릴리스를 사용하지 않으면 어느 순간 에나 물릴 수 있습니다. 소스 저장소를 확인하면 버전 3.0a8과 3.0b2 사이에 320 개 이상의 커밋이 있다는 것을 알 수 있습니다. github.com/Supervisor/supervisor/compare/3.0a8...3.0b2
glarrain

1
@glarrain-헤드 업 및 비교 링크에 감사드립니다 ... 몰랐습니다. 데비안 패키지 관리자가 알파 릴리스를했다는 성가심. 확실히 데비안 스 테이블의 핵심은 검증 된 버전 만 사용하는 것입니다.
RichVel

13

우분투 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 시작 감독자

서비스를 수동으로 중지하려면

스도 감독관


2
감사! 여기 하나의 라이너가 있습니다 : curl -L https://gist.github.com/raw/1213031/929e578faae2ad3bcb29b03d116bcb09e1932221/sup‌​ervisord.conf > /etc/init/supervisord.conf && start supervisord(루트 여야합니다)
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

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

실행 한 후 잊지 마세요 chkconfig --add supervisord당신은 또한을 통해 서로 다른 실행 레벨을 활성화해야chkconfig supervisord --level 345 on
코리 발루


2

이것은 우분투 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

"stop"인수 처리를 수정하기 위해이 줄을 /etc/init.d/supervisord에 추가했습니다.

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

그리고 이것은 나를 위해 잘 작동합니다.


1

Supervisor는 이제 적절한 저장소에있는 것으로 보이므로 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.