这是我的问题。我在其上运行 CentOS 和 java 进程。Java 进程由启动/停止脚本操作。它也创建了一个 java 实例的 .pid 文件。
我的单位文件看起来像:
[Unit]
After=syslog.target network.target
Description=Someservice
[Service]
User=xxxuser
Type=forking
WorkingDirectory=/srv/apps/someservice
ExecStart=/srv/apps/someservice/server.sh start
ExecStop=/srv/apps/someservice/server.sh stop
PIDFile=/srv/apps/someservice/application.pid
TimeoutStartSec=0
[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)
当我调用stop函数时,脚本终止 java 进程SIGTERM并返回 0 代码:
kill $OPT_FORCEKILL `cat $PID_FILE`
<...>
return 0
Run Code Online (Sandbox Code Playgroud)
之后,如果我检查我的单位的状态,我会得到类似的东西(状态 = 143):
? someservice.service - Someservice
Loaded: loaded (/usr/lib/systemd/system/someservice.service; enabled; vendor preset: disabled)
Active: failed (Result: exit-code) since Wed 2017-08-30 09:17:40 EEST; 4s ago
Process: 48365 ExecStop=/srv/apps/someservice/server.sh stop (code=exited, status=0/SUCCESS)
Main PID: 46115 (code=exited, status=143)
Aug …Run Code Online (Sandbox Code Playgroud)