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.
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:
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.
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 ;-)
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.
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:
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 laexec
línea:Para habilitar la finalización de bash para su servicio, agregue un enlace simbólico a la
/etc/init.d
carpeta:Luego intente iniciar y detenerlo:
Según el nuevo libro de cocina , puede crear
pre-start
/post-start
ypre-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.fuente
sudo chmod +x /etc/init.d/myprogram
. PRECAUCIÓN: ¡su método respondido no funciona en Ubuntu 16.04!start on
No es una estrofa necesaria. Como puede leer aquí : tal trabajo solo puede ser controlado por un administrador .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 ;-)
fuente