ssh 断开连接后服务退出

ssh 断开连接后服务退出

如果我没有登录,该服务可以完美运行,但如果我使用 ssh 连接然后断开连接,服务就会终止。该服务属于我通过 ssh 访问的用户。这是我当前的 ts3.service 文件:

[Unit]
Description=TeamSpeak3Server

[Service]
User=user1
Group=staff
Type=forking
WorkingDirectory=/usr/local/bin/teamspeak3-server_linux_amd64
ExecStart=/usr/local/bin/teamspeak3-server_linux_amd64/ts3server_startscript.sh start
ExecStop=/usr/local/bin/teamspeak3-server_linux_amd64/ts3server_startscript.sh stop
PIDFile=/usr/local/bin/teamspeak3-server_linux_amd64/ts3server.pid
RestartSec=5
Restart=always
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

我已经尝试将 ExecStart 更改为

ExecStart=/usr/bin/nohup /usr/local/bin/teamspeak3-server_linux_amd64/ts3server_startscript.sh start

其他服务(例如 openvpn)可以在 ssh 注销后继续存在。重新连接后,systemd 进程的状态为:

active (exited)

而正常状态是

active (running)

问题的原因可能是我执行的脚本调用了另一个脚本,如果 shell 发送ighup 消息,该脚本就会被杀死?谢谢您的回答。

编辑:

ts3server_startscript.sh 的重要部分如下:

COMMANDLINE_PARAMETERS="${2}"
D1=$(readlink -f "$0")
BINARYPATH="$(dirname "${D1}")"
cd "${BINARYPATH}"
LIBRARYPATH="$(pwd)"
BINARYNAME="ts3server"

if [ -e "$BINARYNAME" ]; then
  if[ -x "$BINARYNAME" ]; then
  export LD_LIBRARY_PATH="${LIBRARYPATH}:${LD_LIBARY_PATH}"
  "./${BINARYNAME}" ${COMMANDLINE_PARAMETERS} > /dev/null &
  PID=$!
  ps -p ${PID} > /dev/null 2>&1
  if [ "$?" -ne "0" ]; then
      echo "..."
  else
      echo $PID > ts3server.pid
  fi

因此,如果我解释正确,服务器将在控制台中启动

     "./${BINARYNAME}" ${COMMANDLINE_PARAMETERS} > /dev/null &

相关内容