¿se usa advenedizo y supervisor para la misma cosa?

13

Tengo algunos procesos basados ​​en jvm que necesito para asegurarme de iniciar cada vez que se reinicia mi servidor, y también si se detiene debido a un error inesperado, etc.

Estoy ejecutando Ubuntu 12.04 por si acaso.

He visto ejemplos de guiones para principiantes y me estoy inclinando de esa manera, pero quiero entender cuáles son las diferencias con algo como advenedizo o supervisión.

¿Se usan exactamente para los mismos fines o existen diferencias en la funcionalidad?

Blankman
fuente

Respuestas:

12

La diferencia es que el advenedizo es un reemplazo inicial mientras que el supervisor es un Process Control System. Esta explicación se da en el sitio del supervisor :

Comparte algunos de los mismos objetivos de programas como launchd, daemontools y runit. A diferencia de algunos de estos programas, no debe ejecutarse como un sustituto de init como "Id. De proceso 1". En cambio, debe usarse para controlar procesos relacionados con un proyecto o un cliente, y debe comenzar como cualquier otro programa en el momento del arranque.

Esto significa que el supervisor en sí mismo se iniciaría por arranque, ya sea a través de un archivo de trabajo de arranque o un script de inicio sysV. Personalmente, he optado por utilizar un administrador de procesos en lugar de un inicio simple por las siguientes razones:

  1. El servicio no daemoniza correctamente
  2. Se sabe que el servicio muere y necesita ser monitoreado y reiniciado

Un ejemplo de un programa que no daemoniza adecuadamente es cuando no cierra stdout y stderr y continúa escribiendo datos en esas ubicaciones. El supervisor puede manejar el registro de esa salida.

jordanm
fuente
Ya veo, no estoy seguro de entender completamente, pero pensé que el arranque también puede reiniciar el proceso si falla.
Blankman
@Blankman, supongo que hay incluso menos razones con los sistemas init modernos
jordanm el
Notaría que la solución adecuada para un servicio que no daemoniza adecuadamente sería arreglar el error con dicho servicio que hace que no daemonize correctamente. Sin embargo, concederé que algo como la supervisión sería útil para el n. ° 2.
Shadur
1
@shadur No estoy de acuerdo con que esa sea la mejor solución. Es posible que el proceso no sea de su propiedad, por lo que no puede solucionarlo. Incluso si puede solucionarlo, no importa cuántos errores solucione, nunca podrá saber que no hay más al acecho, y años después, su proceso morirá una vez más, en producción, debido a alguna situación que nunca ha sido expuesta. antes, como una red inusual o una condición de base de datos. ¿Preferiría que su sitio permanezca fuera de línea, frustrando a los usuarios y costándole dinero? No. Necesita una herramienta para reiniciar los servicios. Período.
Jonathan Hartley