Cómo crear un servicio en Ubuntu Upstart

21

Tengo un programa ejecutable de Java que puedo ejecutar escribiendo java -jar abc.jaren la terminal. ¿Cómo puedo ejecutarlo como un servicio? Quiero ejecutarlo como un servicio al escribir service abc start.

mehmet mecek
fuente
Una respuesta más completa está aquí: unix.stackexchange.com/questions/1924/… Básicamente, en Ubuntu puede crear un script para /etc/init.d que puede iniciar / detener / reiniciar su servicio.
Sr. Ed

Respuestas:

41

Asegúrate de estar en 14.04. Ubuntu 16.04 (y superior) usa systemd, no Upstart.

Un script de Upstart es un archivo de script colocado en /etc/init/y que termina en .conf.

Requiere 2 secciones: una para indicar cuándo comenzar y otra con el comando para ejecutar.

El script más fácil para comenzar con su muestra es:

# myprogram.conf
start on filesystem
exec /usr/bin/java -jar /path_to/program

Creado como root debajo /etc/init/myprogram.conf.

Si su script requiere más de una línea de comando, use la scriptsección en lugar de la execlínea:

# myprogram.conf
start on filesystem
script
    /usr/bin/java -jar /path_to/program
    echo "Another command"
end script

Para habilitar la finalización de bash para su servicio, agregue un enlace simbólico a la /etc/init.dcarpeta:

sudo ln -s /etc/init/myprogram.conf /etc/init.d/myprogram

Luego intente iniciar y detenerlo:

sudo service myprogram start

Según el nuevo libro de cocina , puede crear pre-start/ post-starty pre-stop/ post-stopcomandos para ejecutar.

Además, leí que desea verificar si se está ejecutando un proceso. Verifique esta pregunta y tal vez use la pre-startsección.

Rael Gugelmin Cunha
fuente
1
Quizás necesites hacerlo ejecutable con sudo chmod +x /etc/init.d/myprogram. PRECAUCIÓN: ¡su método respondido no funciona en Ubuntu 16.04!
juliocesar
2
@juliocesar 16.04 usa systemd, no Upstart.
Rael Gugelmin Cunha
start onNo es una estrofa necesaria. Como puede leer aquí : tal trabajo solo puede ser controlado por un administrador .
SuB
@SuB yeap, pero luego el trabajo no se iniciará automáticamente, y estaba claro que el autor de la pregunta desea que algo actúe como un servicio, es decir, que se inicie automáticamente.
Rael Gugelmin Cunha
Sí. Lo sé. Acabo de agregar un comentario para completar su respuesta.
SuB
0

Necesitas crear un advenedizo. http://upstart.ubuntu.com/getting-started.html

Upstart es (en mi humilde opinión) un desastre en comparación con los buenos scripts de inicio de SysV. Upstart es MUCHO más esfuerzo con poco beneficio para el trabajo adicional. Dicho esto, sospecho que habrá algunos defensores advenedizos que me llevarán a la tarea diciendo lo obvio ;-)

Andrés
fuente
1
Es solo un archivo en /etc/init/yourservice.conf con una línea que indica cuándo comenzar, y otra para el comando exec. Fedora también usa el advenedizo. Además, incluso Debian está cambiando su esquema inicial a SystemD, que será el esquema de Ubuntu en el futuro.
Rael Gugelmin Cunha