Ubuntu에서 systemd를 통해 TeamSpeak를 자동으로 시작합니다.

Ubuntu에서 systemd를 통해 TeamSpeak를 자동으로 시작합니다.

TeamSpeak를 시작하고 중지하는 시스템 서비스 스크립트가 있습니다. 수동으로 시작하고 중지하면 제대로 작동하지만 서버가 다시 시작될 때 TeamSpeak가 자동으로 시작되지 않습니다. 파일은 다음과 같습니다.

[Unit]
Description=TeamSpeak Server
Wants=network-online.target
After=syslog.target network.target nss-lookup.target network-online.target

[Service]
Type=forking
WorkingDirectory=/usr/local/bin/teamspeak3-server_linux-amd64
ExecStart=/usr/local/bin/teamspeak3-server_linux-amd64/ts3server_startscript.sh start
ExecReload=/usr/local/bin/teamspeak3-server_linux-amd64/ts3server_startscript.sh restart
ExecStop=/usr/local/bin/teamspeak3-server_linux-amd64/ts3server_startscript.sh stop
PIDFile=/usr/local/bin/teamspeak3-server_linux-amd64/ts3server.pid
User=smares
Group=smares

[Install]
WantedBy=multi-user.target

내 Ark: Survival Evolved 서버에 대한 다음 스크립트는 정상적으로 실행됩니다.

[Unit]
Description=ARK: Survival Evolved Server
Wants=network-online.target
After=syslog.target network.target nss-lookup.target network-online.target

[Service]
ExecStart=/home/smares/Steam/games/ark/ShooterGame/Binaries/Linux/ShooterGameServer TheIsland?MaxPlayers=5?listen -server -log
LimitNOFILE=100000
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s INT $MAINPID
User=smares
Group=smares

[Install]
WantedBy=multi-user.target

내가 뭘 잘못했나요?

답변1

Ubuntu Server 16.04에서 TeamSpeak 서버를 설정하는 동안 동일한 문제에 직면했으며 다음 systemd 장치(에 저장 /etc/systemd/system/teamspeak3.service)를 사용하여 문제를 해결했습니다.

[Unit]
Description=TeamSpeak3 Server
Wants=network-online.target
After=syslog.target network.target

[Service]
WorkingDirectory=/opt/teamspeak3-server
User=teamspeak3-user
Type=forking
ExecStart=/opt/teamspeak3-server/ts3server_startscript.sh start initfile=ts3server.ini
ExecStop=/opt/teamspeak3-server/ts3server_startscript.sh stop
ExecReload=/opt/teamspeak3-server/ts3server_startscript.sh reload
PIDFile=/opt/teamspeak3-server/ts3server.pid

[Install]
WantedBy=multi-user.target

다음과 같이 이 서비스를 활성화하면:

systemctl enable teamspeak3.service

제공한 출력이 없기 때문에 journalctl -u teamspeak3.service정확히 문제가 무엇인지 말하기가 어렵습니다. 또한 귀하가 지정한 것과 동일한 구성을 사용하여 테스트했는데 After효과가 있었습니다. 문제는 서비스를 올바르게 활성화하지 못했거나 매개변수 .ini에 구성을 지정하지 않았기 때문에 파일에 문제가 있다는 것입니다 ExecStart.

답변2

[Unit]
Description=TeamSpeak3 Server
Wants=network-online.target
After=syslog.target network.target

[Service]
WorkingDirectory=/opt/teamspeak3
User=teamspeak
Type=simple
ExecStart=/opt/teamspeak3/ts3server

[Install]
WantedBy=multi-user.target

Type=simple사용하면 더 효과가 좋은 것 같아요 . 이런 방식으로 systemd는 프로세스를 모니터링할 수 있으며 journalctl출력에서 ​​teampeak 서버의 stdout 출력을 얻을 수도 있습니다.

관련 정보