Sto usando questa definizione per un systemd
lavoro:
[Unit]
Description=Some job
[Service]
ExecStart=/usr/local/sbin/somejob
User=dlt
Type=forking
[Install]
WantedBy=multi-user.target
Lo script viene chiamato come segue (chiamando una semplice routine che ascolta su un socket tcpip e accoda l'input a un file):
#!/bin/sh
cd /home/user/tmp/testout
nohup java -jar /home/user/programming/tests/java/core/SocketTest/SocketTest.jar </dev/null >/dev/null &
Dopo che il systemctl start somejob
processo viene visualizzato come in esecuzione, con init
come 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
Dopo aver eseguito systemctl stop somejob
il processo non viene più visualizzato (e la porta è chiusa).
Quindi tutto sembra a posto e dandy
La mia domanda è: è una soluzione accettabile per eseguire un demone Java con systemd
, o ci sono avvertenze, e quindi altri modi più stabili o sicuri per raggiungere questo obiettivo?