UbuntuサーバーにPixArkサーバー用のsystemdサービスを作成しました。このサービスは、クラッシュが発生してもサーバーを実行し続け、システムが再起動またはシャットダウンしたときにサーバーを安全にシャットダウンできるようにします。コードは以下のように表示されます。
[Unit]
Description=PixArk SilentMecha
After=network.target
[Service]
WorkingDirectory=/PixArk
Type=forking
User=mecha
Restart=always
ExecStart=/usr/bin/screen -S PixArk -d -m ./start_server.sh
ExecStop=/PixArk/rconcli/rcon-cli --config /PixArk/PixArk.yaml "ServerChat SERVER SHUTTING DOWN IN 15 SECONDS..."
ExecStop=/bin/sleep 5
ExecStop=/PixArk/rconcli/rcon-cli --config /PixArk/PixArk.yaml "ServerChat SERVER SHUTTING DOWN IN 10 SECONDS..."
ExecStop=/bin/sleep 5
ExecStop=/PixArk/rconcli/rcon-cli --config /PixArk/PixArk.yaml "ServerChat SERVER SHUTTING DOWN IN 5 SECONDS..."
ExecStop=/bin/sleep 5
ExecStop=/PixArk/rconcli/rcon-cli --config /PixArk/PixArk.yaml "saveworld"
ExecStop=/bin/sleep 1
ExecStop=/PixArk/rconcli/rcon-cli --config /PixArk/PixArk.yaml "DoExit"
[Install]
WantedBy=multi-user.target
start_server.sh ファイルは次のとおりです。
#!/bin/bash
wine64 /PixArk/ShooterGame/Binaries/Win64/PixARKServer.exe CubeWorld_Light?DelayRegisterServer=True?bRawSockets=True?SessionName="SilentMecha"?MaxPlayers=20?RCONEnabled=True?RCONPort=27017? -server -gameplaylogging -log -CULTUREFORCOOKING=en -NoBattlEye -QueryPort=27016 -Port=27015 -CubePort=27018 -cubeworld=SilentMecha -NoHangDetection
私はそれを動作しています。起動しますが、コマンドを実行するとsudo systemctl stop PixArk
長い時間中断され、次のコマンドが完了します。最後のExecStopコマンドの直後に完了するMinecraftサーバーとまったく同じサービスを作成しました。私が逃したものはありますか?私はまだsystemd使用の専門家ではないので、誰か私を助けてください。停止しますが、他のコマンドを実行する前にシェルに戻るのにMinecraftサーバーよりも時間がかかります。
したがって、コマンドを手動で実行すると、20秒以内にすべてのタスクを完了できます。 systemdで実行すると、sudo systemctl stop PixArk
端末に戻るのに1〜2分かかります。システムをシャットダウンする前に、フィックスアークサーバーを安全にシャットダウンして動作するため、障害の原因を探そうとします。完了するのに時間がかかると、終了シーケンスが予想より2分長くなるのではないかと心配されます。現時点では大きな問題ではありませんが、どこで間違っているのか知りたいです。たぶん私は簡単なものを見逃しているかもしれません。