Solución:
Aquí hay una manera fácil de hacerlo usando SysVInit. Instrucciones:
-
Cree el script de inicio y finalización de su aplicación. Ponlo en algún directorio, en nuestro ejemplo es:
- Iniciar guion:
/usr/local/bin/myapp-start.sh
- Detener secuencia de comandos:
/usr/local/bin/myapp-stop.sh
Cada uno proporcionará las instrucciones para ejecutar / detener la aplicación. Por ejemplo, el
myapp-start.sh
El contenido puede ser tan simple como lo siguiente:#!/bin/bash java -jar myapp.jar
Para el script de detención, puede ser algo como esto:
#!/bin/bash # Grabs and kill a process from the pidlist that has the word myapp pid=`ps aux | grep myapp | awk '{print $2}'` kill -9 $pid
- Iniciar guion:
-
Cree el siguiente script (
myscript
) y ponlo/etc/init.d
./etc/init.d/myscript
contenido:#!/bin/bash # MyApp # # description: bla bla case $1 in start) /bin/bash /usr/local/bin/myapp-start.sh ;; stop) /bin/bash /usr/local/bin/myapp-stop.sh ;; restart) /bin/bash /usr/local/bin/myapp-stop.sh /bin/bash /usr/local/bin/myapp-start.sh ;; esac exit 0
-
Ponga el script para comenzar con el sistema (usando SysV). Simplemente ejecute el siguiente comando (como root):
update-rc.d myscript defaults
PD: Sé que Upstart es genial y bla bla, pero prefiero el antiguo sistema de inicialización SysV.
¡Sí! Es posible. 🙂 Advenedizo es el camino a seguir para asegurarse de que el servicio siga funcionando. Tiene cinco paquetes, todos instalados por defecto:
- Upstart init demonio y utilidad initctl
- upstart-logd proporciona el demonio logd y el archivo de definición de trabajos para el servicio logd
- upstart-compat-sysv proporciona archivos de definición de trabajos para las tareas rc y las herramientas de reinicio, nivel de ejecución, apagado y telinit que brindan compatibilidad con SysVinit
- startup-tasks proporciona archivos de definición de trabajos para las tareas de inicio del sistema
- system-services proporciona archivos de definición de trabajos para servicios tty
El aprendizaje es muy agradable y merece la pena. Upstart tiene un sitio web: http://upstart.ubuntu.com/
3 sugerencias rápidas …
-
Crear un Sguión tarta en
/etc/rc3.d
(modo de consola multiusuario) con el correspondiente Kmalos guiones en/etc/rc.0
y/etc/rc6.d
para matar su programa Java de forma controlada cuando el sistema se apaga (nivel de ejecución 0) o se reinicia (nivel de ejecución 6) Consulte Introducción a los niveles de ejecución.Es posible que pueda iniciar su aplicación Java en el nivel de ejecución 2 (rc2.d) pero, como rastreador, necesitará TCP / IP. Así que asegúrese de que su servicio de red esté disponible / iniciado en su nivel de ejecución 2 de antemano. Definitivamente, la creación de redes está en el nivel de ejecución 3.
/etc/init.d
contiene todos los scripts de inicio / finalización reales./etc/rcN.d
Los directorios solo contienen enlaces a ellos, con el prefijo S o K para iniciarlos o eliminarlos respectivamente, por nivel de ejecución N. -
Un proceso dirigido por
crond
debe persistir entre cierres de sesión. Tal vez lo agregue a su crontab. -
Un proceso ejecutado con
nohup
también debe persistir. Vea nohup: ejecute un comando incluso después de cerrar la sesión.$ nohup java -jar myapp.jar &
Por defecto,
myapp.jar
La salida estándar irá a un archivo llamado./nohup.out
, o$HOME/nohup.out
si el primero no se puede escribir.