Como usar o SystemD para rodar um servidor de jogo 24/7?

1

Sou relativamente novo no Linux (CentOS 7.2).

Estou tentando que meus Hurtworld servidores sejam executados a partir de systemd , para que eu possa usar esse bom recurso restart=always . No entanto, para obter vários HW servidores em execução, lembro-me de ter usado tmux sessões individuais.

Este é um dos meus scripts de início de servidor:

#!/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

Esses scripts funcionam muito bem para a execução dos servidores, mas não importa a variação ou as extrações que eu uso, não consigo executá-lo por meio de systemd . O melhor que consegui é ter o executável HurtworldServer real em execução, mas ele morre muito rapidamente. Eu acredito que isso é porque eu não posso fazê-lo correr através de tmux desta forma, eu acho que lembro de ter exatamente esse problema tentando fazer com que os servidores funcionassem, até que eu consegui tmux .

Então, eu acho que preciso saber como iniciar um aplicativo a partir de uma sessão tmux criada por systemd . Mas então eu antecipo um novo problema em systemd não registrar o executável do servidor como o processo principal, então restart = sempre só reiniciará tmux se ele morrer?

Parece que estou preso entre uma rocha e um lugar difícil e está enrugando o meu cérebro para o esquecimento então, se algum de vocês grandes gênios que eu tenho aprendido desde que eu tenho esse dedi , gostaria de me ajudar a resolver isso eu ficaria muito grato.

Eu estaria disposto a usar algo como upstart ou monit , se isso me permitir a opção de usar o meu script e rastrear o processo real de outra maneira, ou algo assim.

    
por Will Jackson 09.06.2016 / 17:00

1 resposta

1

Então eu tenho tudo funcionando

[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

este é o arquivo .service em funcionamento, caso ele possa ajudar alguém. Eu acho que o problema foi finalmente causado por falta de parâmetro workingdirectory, mas francamente eu não tenho idéia. muito obrigado a dave por tentar ajudar !!

    
por 10.06.2016 / 17:25