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 출력을 얻을 수도 있습니다.