Cómo iniciar automáticamente la supervisión en Linux (Ubuntu)


38

El supervisor no viene con un script de inicio o no indica cómo comenzarlo automáticamente, es decir. Después de un reinicio. He probado algunos scripts /etc/init.d aportados por los usuarios, pero todos fallan.

¿Cuál sería la solución preferida?


¿Cómo quieres decir "fallar"? por cierto; esta pregunta parece pertenecer a serverfault.
erenon

Debian estable tiene scripts de inicio que funcionan, así que supongo que esta pregunta está desactualizada.

Respuestas:


40

En realidad, encontré uno que funciona aquí http://gist.github.com/176149 . Para instalarlo:

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

para ejecutarlo

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

y para programarlo automáticamente, hacer

sudo update-rc.d supervisord defaults

Asegúrese de que el pid correcto en /etc/supervisord.conf que está asignado en /etc/init.d/supervisord

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

Pare y comience a trabajar correctamente

service supervisord stop
service supervisord start

Esto es específico de Debian? Faltan /lib/init/vars.sh y update-rc.d en un cuadro de
Centos6.5

1
¿Cómo sabemos a dónde va supervisord.conf? / ¿Dónde debemos poner supervisord.conf?
Weiwei

1
Descubrí que era mucho más fácil instalar el supervisor desde el repositorio de Debian Squeeze. Hacer el supervisor de instalación de aptitude incluye la configuración correcta del archivo /etc/init.d con enlaces, y coloca el archivo de configuración en /etc/supervisor/supervisord.conf
RichVel

2
@RichVel Esa es una versión alfa, con muchos errores. Tal vez la mayoría de ellos no afecten su sistema, pero no puede estar seguro, y no tener la última versión puede morderlo en cualquier momento. Verifique el repositorio de origen y verá que hay más de 320 confirmaciones entre las versiones 3.0a8 y 3.0b2 github.com/Supervisor/supervisor/compare/3.0a8...3.0b2
glarrain

1
@glarrain: gracias por el enlace de aviso y comparación ... No me di cuenta de eso, molesto de que el empaquetador de Debian haya lanzado una versión alfa. Seguramente el objetivo de Debian estable es usar solo versiones probadas ...
RichVel

13

Creé un script de inicio para ubuntu 9.10

Por ejemplo, instalé el supervisor en un entorno virtual, luego inicié y controlé al supervisor desde el inicio.

crear un archivo de texto /etc/init/supervisord.conf

los contenidos son:

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

Se iniciará automáticamente el supervisor en el arranque. Para comenzar manualmente después de crear el archivo .conf, use

supervisor de inicio de sudo

Para detener manualmente el servicio, use

supervisor de parada de sudo


2
¡Gracias! Aquí hay una curl -L https://gist.github.com/raw/1213031/929e578faae2ad3bcb29b03d116bcb09e1932221/sup‌​ervisord.conf > /etc/init/supervisord.conf && start supervisord
frase

3
Siempre revise las frases ingeniosas antes de ejecutarlas. Este está bien, pero solo quería agregar ese consejo.
Cory Walker

12

Esto es lo que uso en RHEL 5.4 y CentOS 5.5

No estoy seguro de si depende de algunos ajustes de configuración en mi supervisor.conf. Pero parece funcionar bien.

Debe ejecutar el siguiente comando después de instalarlo

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

solo agregaría que necesita agregar permisos a + x antes de intentar ejecutarlo: chmod + x /etc/init.d/supervisord
JiminyCricket

No olvides que después de correr chkconfig --add supervisordtambién debes habilitarlo para diferentes niveles de carrera a través dechkconfig supervisord --level 345 on
Corey Ballou


2

Esto está funcionando para mí en Ubuntu 10.04.3 LTS. También parece funcionar en 8.04:

Agregue lo siguiente a /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

Entonces corre:

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

sudo service supervisord start

Ninguna de las otras respuestas funcionó para mí.


1

Agregué estas líneas en /etc/init.d/supervisord para arreglar el procesamiento del argumento "detener":

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

Y esto funciona muy bien para mí.


1

Supervisor parece estar ahora en el repositorio de apt, por lo que no debería ser necesario crear manualmente archivos init, solo:

sudo apt-get install supervisor

Es posible que desee limpiar primero (y hacer una copia de seguridad) sus archivos antiguos antes de la instalación.


Debe tener en cuenta que "Algunos de estos paquetes pueden retrasarse considerablemente con respecto a la versión de lanzamiento oficial. Por ejemplo, Ubuntu 12.04 (lanzado en abril de 2012) ofrece un paquete basado en Supervisor 3.0a8 (lanzado en enero de 2010)". (de la documentación del Supervisor supervisord.org/… )
glarrain
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.