Jak automatycznie uruchomić nadzór w systemie Linux (Ubuntu)

38

Supervisord nie jest dostarczany ze skryptem inicjującym lub nie wskazuje, jak uruchomić go automatycznie, tj. po ponownym uruchomieniu. Próbowałem już napisanych przez użytkownika skryptów /etc/init.d, ale wszystkie zawiodły.

Jakie byłoby preferowane rozwiązanie?


źródło
jak masz na myśli „porażkę”? btw; to pytanie wydaje się należeć do błędu serwera.
erenon
Stabilna Debiana ma działające skrypty inicjujące, więc myślę, że to pytanie jest nieaktualne.

Odpowiedzi:

40

Właściwie znalazłem taki, który działa tutaj http://gist.github.com/176149 . Aby zainstalować:

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

uruchomić

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

i automatycznie zaplanuj to, zrób

sudo update-rc.d supervisord defaults

Upewnij się, że poprawny pid znajduje się w /etc/supervisord.conf, który jest odwzorowany w /etc/init.d/supervisord

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

Zatrzymaj i zacznij działać poprawnie

service supervisord stop
service supervisord start
caesarsol
źródło
To jest specyficzne dla Debiana? Brakuje /lib/init/vars.sh i update-rc.d na pudełku
Centos6.5
1
skąd wiemy, gdzie idzie supervisord.conf? / Gdzie powinniśmy umieścić supervisord.conf?
Weiwei
1
Odkryłem, że o wiele łatwiej jest po prostu zainstalować superwizję z repozytorium squeeze Debiana - wykonanie superwizji aptitude obejmuje poprawną konfigurację pliku /etc/init.d z linkami i umieszcza plik konfiguracyjny w /etc/supervisor/supervisord.conf
RichVel,
2
@RichVel To jest wersja alfa z wieloma błędami. Być może większość z nich nie wpływa na twój system, ale nie możesz być pewien, a brak najnowszej wersji może cię ugryźć w każdej chwili. Sprawdź repozytorium źródłowe, a zobaczysz, że istnieje ponad 320 zmian między wersjami 3.0a8 i 3.0b2 github.com/Supervisor/supervisor/compare/3.0a8...3.0b2
glarrain
1
@glarrain - dzięki za link do heads-upa i porównanie ... Nie zdawałem sobie z tego sprawy - denerwujące, że pakiet Debiana wydał wersję alfa. Z pewnością celem stabilnej wersji Debiana jest używanie tylko sprawdzonych wersji ...
RichVel,
13

Stworzyłem skrypt wstępny dla Ubuntu 9.10

Na przykład zainstalowałem superwizora w środowisku wirtualnym, a następnie uruchomiłem i kontrolowałem superwizora od początku.

utwórz plik tekstowy /etc/init/supervisord.conf

zawartość to:

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

Po uruchomieniu automatycznie uruchomi się nadzorca. Aby ręcznie uruchomić po utworzeniu pliku .conf, użyj

sudo rozpocząć nadzór

Aby ręcznie zatrzymać usługę, użyj

sudo stop supervisord

BKC
źródło
2
Dzięki! Oto jedna linijka: curl -L https://gist.github.com/raw/1213031/929e578faae2ad3bcb29b03d116bcb09e1932221/sup‌​ervisord.conf > /etc/init/supervisord.conf && start supervisord(musisz być rootem)
charlax
3
Zawsze sprawdzaj gist one-liners przed ich uruchomieniem. Ten jest w porządku, ale chciałem tylko dodać tę wskazówkę.
Cory Walker
12

Tego używam na RHEL 5.4 i CentOS 5.5

Nie jestem pewien, czy to zależy od niektórych ustawień konfiguracji w moim pliku supervisord.conf. Ale wydaje się, że działa OK.

Po zainstalowaniu musisz uruchomić następujące polecenie

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
Peter Lindqvist
źródło
dodałby
Nie zapominaj, że po uruchomieniu chkconfig --add supervisordmusisz również włączyć go dla różnych poziomów uruchamiania za pośrednictwemchkconfig supervisord --level 345 on
Corey Ballou,
2

Działa to dla mnie na Ubuntu 10.04.3 LTS. Wydaje się również działać w 8.04:

Dodaj następujące elementy do /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

Następnie uruchomić:

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

sudo service supervisord start

Żadna z pozostałych odpowiedzi nie działała dla mnie.

shennyg
źródło
1

Dodałem te linie do /etc/init.d/supervisord, aby naprawić przetwarzanie argumentów „stop”:

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

i to działa świetnie dla mnie.

rukeba
źródło
1

Wygląda na to, że superwizor znajduje się teraz w apt repozytorium, więc ręczne tworzenie plików inicjujących nie powinno być konieczne, wystarczy:

sudo apt-get install supervisor

Przed instalacją możesz najpierw wyczyścić (i wykonać kopię zapasową) stare pliki.

Jeff Bauer
źródło
Należy pamiętać, że „niektóre z tych pakietów mogą znacznie opóźnić się w stosunku do oficjalnej wersji. Na przykład Ubuntu 12.04 (wydany w kwietniu 2012 r.) Oferuje pakiet oparty na Supervisor 3.0a8 (wydany w styczniu 2010 r.).” (z dokumentacji Supervisord supervisord.org/… )
glarrain