我已经设置了一个 Ubuntu 18.04 实例,用作私有 Minecraft Bedrock 服务器。
我已经从https://www.minecraft.net/en-us/download/server/bedrock/下载了服务器本身
我可以直接从 shell 运行它,一切正常。然而,我想做的是将其配置为服务,这样它将在启动时自动启动,并优雅地停止等。
“bedrock_server”可执行文件在前台运行,并等待来自标准输入的各种命令,例如“stop”、“kick”、“save”等。
有没有一种方法可以配置服务脚本,以便可以像这样控制它......
$ service minecraft stop
$ service minecraft restart
Run Code Online (Sandbox Code Playgroud)
如果我还可以发出其他特定于《我的世界》的命令,那就更好了,例如......
$ service minecraft kick [player name or xuid]
Run Code Online (Sandbox Code Playgroud)
ETC。
不过我不太关心这种能力。我想要的主要事情是能够在服务器启动时正确启动它,并优雅地停止。
我不需要为我完整地写下它。如果有人可以指导我查看教程、模板或其他东西,那就太好了。
这是我当前用来从 shell 启动它的完整命令......
$ cd /home/[my-user]/bedrock-server-1.14.60.5 && LD_LIBRARY_PATH=. ./bedrock_server
Run Code Online (Sandbox Code Playgroud)
更新...
根据下面的答案以及大量的试验和错误,我想出了这个 systemd 脚本......
[Unit]
Description=Minecraft Bedrock Service
After=network-online.target
[Service]
User=[my-user]
WorkingDirectory=/home/[my-user]/bedrock-server-1.14.60.5
Type=forking
ExecStart=/usr/bin/screen -dmS UbuntuMinecraft /bin/bash -c "LD_LIBRARY_PATH=. ./bedrock_server"
ExecStop=/usr/bin/screen -Rd UbuntuMinecraft -X stuff "say Stopping server in 10 seconds...\r"
ExecStop=/bin/sleep 10
ExecStop=/usr/bin/screen -Rd UbuntuMinecraft -X …Run Code Online (Sandbox Code Playgroud)