私はこの定義を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
、それとも警告、つまりこれを達成するためのより安定した安全な方法ですか?