SystemD 24/7을 사용하여 게임 서버를 실행하는 방법은 무엇입니까?

SystemD 24/7을 사용하여 게임 서버를 실행하는 방법은 무엇입니까?

저는 Linux(CentOS 7.2)를 처음 접했습니다.

이 멋진 기능을 사용할 수 있도록 Hurtworld서버를 실행 하려고 합니다 . 하지만 여러 대의 서버를 운영하려면 별도의 세션을 사용해야 했던 기억이 납니다 .systemdrestart=alwaysHWtmux

이것은 내 서버 시작 스크립트 중 하나입니다.

#!/bin/bash
tmux new -d -s hurtworld5 '
./Hurtworld.x86_64 -batchmode \
-nographics \
-exec "host 15871;queryport 15872;servername [EU/US] <color=#f50>HURTCRAFT.com X1/VANILLA INF 25.05</color>  www.hurtcraft.com;maxplayers 120;addadmin 76561197987029828;structurecomplexitylimit 100000;targetfps 60;spawncooldown -0.1 20;combatlogtimeout 30;afkkicktime 260000;chatconnectionmessagesenabled 0;vehicledecaytime 86400;stakedeauthtime 518400" \
-logfile "gamelog.txt"
'tmux detach -s hurtworld5

이 스크립트는 서버를 실행하는 데 적합하지만 어떤 변형이나 발췌본을 사용하더라도 통과할 수 없습니다 systemd. 내가 얻을 수 있는 최선은 실제 HurtworldServer실행 파일을 실행하는 것이지만 빠르게 사라집니다. 나는 이것이 이 방법으로 실행할 수 없기 때문이라고 생각합니다 tmux. 서버가 작동할 때까지 서버를 작동시키려고 노력하는 동안 정확히 이와 같은 문제가 있었던 것으로 기억합니다 tmux.

tmux그래서 에서 생성한 세션에서 애플리케이션을 시작하는 방법을 알아야 할 것 같습니다 systemd. 그러나 systemd서버 실행 파일을 기본 프로세스로 등록하지 않는 새로운 문제가 발생할 것으로 예상하므로 restart=always tmux는 서버가 종료된 경우에만 다시 시작됩니까?

제가 바위와 힘든 곳 사이에 갇힌 것 같고 그게 제 뇌를 어지럽히는 것 같아요. 그래서 dedi제가 이것을 얻은 이후로 여러분에게서 배워온 위대한 천재 중 누구라도 제가 이것을 이해하는 데 도움을 주고 싶어할 것입니다. 나가면 정말 기쁘고 감사할 것 같아요.

나는 스크립트를 사용하고 실제 프로세스를 다른 방식으로 추적할 수 있는 옵션을 제공하거나 이와 upstart같은 것을 기꺼이 사용할 것입니다 .monit

답변1

그래서 나는 모든 것이 괜찮습니다

[Unit]
Description=HW1SVC
After=network.target

[Service]
Type=simple
User=servers2
WorkingDirectory=/data/steamcmd/hw6/
ExecStart=/data/steamcmd/hw6/Hurtworld.x86_64 -batchmode -nographics -exec "autoexec.cfg" -logfile "gamelog.txt"
KillSignal=SIGINT
TimeoutStopSec=30
Restart=always

[Install]
WantedBy=network.target

누군가에게 도움이 될 경우를 대비해 작동하는 .service 파일은 다음과 같습니다. 나는 문제가 궁극적으로 누락된 작업 디렉토리 매개변수로 인해 발생했다고 생각하지만 솔직히 모르겠습니다. 도움을 주신 데이브에게 정말 감사드립니다!

관련 정보