Estoy usando esta definición para un systemd
trabajo:
[Unit]
Description=Some job
[Service]
ExecStart=/usr/local/sbin/somejob
User=dlt
Type=forking
[Install]
WantedBy=multi-user.target
El script que se llama es el siguiente (llama a una rutina simple que escucha en un socket tcpip y agrega la entrada a un archivo):
#!/bin/sh
cd /home/user/tmp/testout
nohup java -jar /home/user/programming/tests/java/core/SocketTest/SocketTest.jar </dev/null >/dev/null &
Después del systemctl start somejob
proceso se muestra como en ejecución, con init
su padre:
user@CANTANDO ~$ ps -u dlt eo pid,ppid,command
PID PPID COMMAND
8718 1 java -jar /home/user/programming/tests/java/core/SocketTest/SocketTest.jar
Después de realizar systemctl stop somejob
el proceso ya no se muestra (y el puerto está cerrado).
Entonces todo parece bien y elegante
Mi pregunta es: ¿Es esta una solución aceptable para ejecutar un demonio java con systemd
, o hay advertencias, y por lo tanto otras formas más estables o seguras de lograr esto?