我在 Ubuntu 21.10 上运行多个 Minecraft 服务器,我希望它们在我打开或重启机器时自动启动。我在网上听说过 systemd 服务,但我不太了解它们,如果有人能给我一个完整的指南,那就太好了。
答案1
一直在寻找这个答案,最后不得不使用聊天 GPT3 来帮助解决 systemd 错误。很可能可以进行一些改进,但从我发现的情况来看,这至少应该可以提供一个基本的工作服务。
这是最终可在 Ubuntu Server 22.04 上运行的 /etc/systemd/system/minecraft-server.service 文件
[Unit]
Description=Minecraft Bedrock Server
Wants=network.target
[Service]
KillMode=none
SuccessExitStatus=0 1
WorkingDirectory=/path/to/server
ExecStart=/path/to/server/bedrock_server LD_LIBRARY_PATH=. ./bedrock_server >/dev/null 2>&1 &
Restart=on-failure
RestartSec=10
Killmode=process
[Install]
WantedBy=multi-user.target
有些事情我不明白,但希望能帮助有同样问题的人
LD_LIBRARY_PATH 无法预先设置为绝对路径。这会让服务器在技术上启动,但会出错,无法找到 server.properties 文件。“WorkingDirectory”修复了这个问题,但不确定为什么 LD_LIBRARY_PATH 不能只是一个绝对路径变量。
ExecStart=/Path/to/server/bedrock_server - 我不知道为什么需要这个,因为我读到它是在设置路径之前运行可执行文件,然后重新运行可执行文件,但如果没有它它就无法工作。