servicio services run create como java unix service daemon

java - run - linux services



Java se ejecuta como un servicio de Unix (5)

Bueno, si desea ejecutar su programa java incluso cuando sale de su shell, la siguiente es la forma más simple:

$nohup java -jar program.jar &

Esta pregunta ya tiene una respuesta aquí:

He construido un pequeño demonio en Java y me gustaría ejecutarlo como un servicio bajo Unix (por ejemplo, Debian 5). He leído que existe la posibilidad de usar un contenedor Java, pero ¿no hay otra opción que sea más fácil de implementar? ¿No puedo usar un comando Unix como xxx java -jar program.jar ?



Puede utilizar un trabajo cron para programar su programa. También puede consultar this artículo para obtener detalles sobre cómo ejecutar scripts en el inicio. Puede escribir un script que ejecute su programa java y ejecutarlo en el inicio como se menciona en el artículo.


Puedes iniciarlo como:

java -jar program.jar

Los demonios de Unix normalmente se inician con init o se inician con un script en /etc/init.d o /etc/rc.d , y se inician en niveles de ejecución específicos, normalmente mediante enlaces blandos en /etc/rcX.d . (donde X es el "nivel de ejecución" previsto, que normalmente es 3.

Creo que Debian está cambiando a usar "upstart", un init-replacement. Utiliza archivos de configuración en /etc/init para definir trabajos, y son bastante fáciles de escribir. Mira eso.

Los demonios tradicionalmente cierran stdin, sdtout y stderr, y hacen una "doble horquilla" al comenzar, para separarse de la sesión y también para indicar que están listos para manejar cualquier cosa que deban manejar. Esto no es realmente necesario, siempre que el daemon no se inicie desde el terminal.

Si quieres un simple shell envoltorio para iniciar tu programa; solo necesitas escribir un pequeño script de shell:

#!/bin/sh /full/path/to/java -jar /full/path/to/program.jar

... y hacerlo ejecutable (chmod 755)


/etc/rcX.d crear un script apropiado en /etc/init.d y vincularlo a los directorios /etc/rcX.d . La secuencia de comandos debe admitir al menos los parámetros de start , stop y status . Durante el inicio, debe ejecutar el comando java con los argumentos adecuados, probablemente a través de nohup java <arguments> & . Luego debería guardar el PID de su proceso recién iniciado en el archivo /var/run/yourservice.pid . stop comando de stop debe leer este archivo PID y eliminar este servicio. Los detalles varían de una distribución a otra, la mayoría de las distribuciones proporcionan algunas macros para facilitar todo el trabajo. Es mejor ver ejemplos de otros servicios en /etc/init.d para su distribución.

Además: si no se accede a su servicio desde otras computadoras desde la red, pero abre algún puerto, deje de estar disponible con el firewall.

Si su servicio procesa algunos datos ''delicados'', es bueno agregar otro usuario e invocar un comando sudo apropiado en su archivo /etc/init.d .