Estou usando esta definição para um systemd
trabalho:
[Unit]
Description=Some job
[Service]
ExecStart=/usr/local/sbin/somejob
User=dlt
Type=forking
[Install]
WantedBy=multi-user.target
O script é chamado da seguinte maneira (chamando uma rotina simples que escuta em um soquete tcpip e anexa a entrada a um arquivo):
#!/bin/sh
cd /home/user/tmp/testout
nohup java -jar /home/user/programming/tests/java/core/SocketTest/SocketTest.jar </dev/null >/dev/null &
Após o systemctl start somejob
processo aparecer como em execução, com init
como pai:
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
Depois de executar systemctl stop somejob
o processo não aparece mais (e a porta está fechada).
Então, tudo parece bem e elegante
Minha pergunta é: Essa é uma solução aceitável para executar um daemon java com systemd
, ou existem advertências e, portanto, outras maneiras mais estáveis ou seguras de se conseguir isso?