Tengo un programa ejecutable de Java que puedo ejecutar escribiendo java -jar abc.jar
en la terminal. ¿Cómo puedo ejecutarlo como un servicio? Quiero ejecutarlo como un servicio al escribir service abc start
.
Tengo un programa ejecutable de Java que puedo ejecutar escribiendo java -jar abc.jar
en la terminal. ¿Cómo puedo ejecutarlo como un servicio? Quiero ejecutarlo como un servicio al escribir service abc start
.
Respuestas:
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 script
sección en lugar de la exec
lí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.d
carpeta:
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-start
y pre-stop
/ post-stop
comandos para ejecutar.
Además, leí que desea verificar si se está ejecutando un proceso. Verifique esta pregunta y tal vez use la pre-start
sección.
sudo chmod +x /etc/init.d/myprogram
. PRECAUCIÓN: ¡su método respondido no funciona en Ubuntu 16.04!
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 ;-)