O serviço funciona perfeitamente se eu não estiver logado, mas se eu me conectar com o ssh e então desconectar o serviço será terminado. O serviço pertence ao usuário a quem eu ssh. Este é o meu arquivo ts3.service atual:
[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
Eu já tentei alterar o ExecStart para
ExecStart=/usr/bin/nohup /usr/local/bin/teamspeak3-server_linux_amd64/ts3server_startscript.sh start
Outros serviços como o openvpn sobrevivem ao logout do ssh. Após a reconexão, o status do processo do sistema lê:
active (exited)
enquanto o status normal é
active (running)
A causa do problema pode ser que o script que eu executo chama outro script que é morto se o shell enviar medições de sighup? Obrigado pelas suas respostas.
Editar:
a parte importante do ts3server_startscript.sh é a seguinte:
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
Então, se eu interpretar corretamente, o servidor é iniciado no console por
"./${BINARYNAME}" ${COMMANDLINE_PARAMETERS} > /dev/null &