Я использую это определение для systemd
работы:
[Unit]
Description=Some job
[Service]
ExecStart=/usr/local/sbin/somejob
User=dlt
Type=forking
[Install]
WantedBy=multi-user.target
Сценарий вызывается следующим образом (вызывая простую подпрограмму, которая прослушивает сокет tcpip и добавляет входные данные в файл):
#!/bin/sh
cd /home/user/tmp/testout
nohup java -jar /home/user/programming/tests/java/core/SocketTest/SocketTest.jar </dev/null >/dev/null &
После того, как systemctl start somejob
процесс показывает, что работает, с init
его родителем:
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
После выполнения systemctl stop somejob
процесс больше не отображается (и порт закрыт).
Так что все выглядит хорошо и модно
Мой вопрос: приемлемо ли это для запуска Java-демона systemd
или есть предостережения и, следовательно, другие более стабильные или безопасные способы достижения этого?