我在工作中使用此定义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 &
After 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
,还是存在警告,因此还有其他更稳定或安全的方法来实现这一目标?