我有一个服务csiJetty.service,单元文件是自动生成的,但我使用了命令"systemctl edit——完整csiJetty.service";使其成为systemd单元文件,而不是sysV单元文件。
但我总是得到服务状态为";激活(退出(";,无法获得状态";活动(运行(";
我把我的单元文件放在下面,有人知道为什么服务状态总是活动(退出(而不是活动(运行(吗?
[Unit]
Documentation=man:systemd-sysv-generator(8)
SourcePath=/etc/init.d/csiJetty
Description=LSB: Jetty WebServer for security components, csi, eat, pnf
[Service]
Type=exec
Restart=no
TimeoutSec=5min
IgnoreSIGPIPE=no
KillMode=process
GuessMainPID=no
RemainAfterExit=yes
SuccessExitStatus=5 6
ExecStart=/etc/init.d/csiJetty start
ExecStop=/etc/init.d/csiJetty stop
csiJetty文件中的start_function是:
start_function() {
echo "111111111111111111111 start"
echo -n "Starting $JETTY_SERV_NAME: "
cd ${csi_HOME}
csi_SERVER_PID=`get_csiadminserver_pid`
if [ ${csi_SERVER_PID} ]
then
echo "${JETTY_SERV_NAME} is already running"
return 1
fi
su - ${GEHC_SECURITY_USER} -s /bin/bash -c "cd ${csi_HOME};./jetty/WebAdmin.sh >& ${csi_HOME}/jetty/logs/csiAdminSrvOut &"
sleep 1
csi_SERVER_PID=`get_csiadminserver_pid`
if [ ${csi_SERVER_PID} ]
then
echo ${csi_SERVER_PID} > ${PID_FILE}
fi
return 0
}
实际上,这是因为在csiJetty.service文件中添加pidfile定义后,服务没有pidfile。
PIDFile=/run/csijetty.pid
然后系统将监视此pid文件的内容,并获取正在运行的状态,而不是退出。