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出力を取得することもできます。

関連情報