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 사용 전문가가 아니기 때문에 누군가 저를 도와주세요. 중지되지만 다른 명령을 실행하기 전에 셸로 돌아가는 데 마인크래프트 서버보다 시간이 오래 걸립니다.
따라서 명령을 수동으로 실행하면 20초 안에 모든 작업을 완료할 수 있습니다. systemd로 실행하면 sudo systemctl stop PixArk
터미널로 돌아가는 데 1~2분 정도 걸립니다. 시스템을 종료하기 전 픽스아크 서버를 안전하게 종료하여 작동하기 때문에 실패 원인을 찾아보려고 합니다. 완료하는 데 시간이 오래 걸리면 종료 시퀀스가 예상보다 2분 더 길어질까 걱정됩니다. 현재로서는 큰 문제는 아니지만 어디서 잘못되었는지 알고 싶습니다. 어쩌면 나는 간단한 것을 놓치고 있을지도 모릅니다.