J'utilise cette définition pour un systemd
travail:
[Unit]
Description=Some job
[Service]
ExecStart=/usr/local/sbin/somejob
User=dlt
Type=forking
[Install]
WantedBy=multi-user.target
Le script est appelé comme suit (appel d'une routine simple qui écoute sur un socket tcpip et ajoute l'entrée à un fichier):
#!/bin/sh
cd /home/user/tmp/testout
nohup java -jar /home/user/programming/tests/java/core/SocketTest/SocketTest.jar </dev/null >/dev/null &
Une fois le systemctl start somejob
processus affiché comme en cours d'exécution, avec init
comme parent:
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
Après avoir effectué systemctl stop somejob
le processus ne s'affiche plus (et le port est fermé).
Donc tout semble bien et dandy
Ma question est: est-ce une solution acceptable pour exécuter un démon java avec systemd
, ou y a-t-il des mises en garde, et donc d'autres moyens plus stables ou sécurisés pour y parvenir?