我对 Linux (CentOS 7.2) 比较陌生。
我正在尝试让我的Hurtworld
服务器运行,systemd
这样我就可以使用这个不错的restart=always
功能。然而,为了让多个HW
服务器运行,我记得我必须使用单独的tmux
会话。
这是我的服务器启动脚本之一:
#!/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 文件,以防它可以帮助某人。我认为问题最终是由于缺少工作目录参数引起的,但坦率地说我不知道。非常感谢戴夫的帮助!