Używam tej definicji do systemd
pracy:
[Unit]
Description=Some job
[Service]
ExecStart=/usr/local/sbin/somejob
User=dlt
Type=forking
[Install]
WantedBy=multi-user.target
Wywoływany jest następujący skrypt (wywoływanie prostej procedury, która nasłuchuje na gnieździe tcpip i dołącza dane wejściowe do pliku):
#!/bin/sh
cd /home/user/tmp/testout
nohup java -jar /home/user/programming/tests/java/core/SocketTest/SocketTest.jar </dev/null >/dev/null &
Gdy systemctl start somejob
proces pokaże się jako uruchomiony, z init
jego rodzicem:
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
Po wykonaniu systemctl stop somejob
proces nie jest już wyświetlany (a port jest zamknięty).
Wszystko wydaje się w porządku i eleganckie
Moje pytanie brzmi: czy jest to akceptowalne rozwiązanie do uruchamiania demona Java systemd
, czy istnieją pewne zastrzeżenia, a zatem inne bardziej stabilne lub bezpieczne sposoby osiągnięcia tego celu?