我正在尝试启动一个本地 Minecraft 服务器,虽然目前已经有了上百万个教程,但我仍想更进一步,超越这些教程的范围,同时进行学习。
我找到一个教程,其中放置了一个 systemd .service 文件,以便在启动时启动它。太棒了。然后,我找到了另一个使用屏幕的教程,这对我有很大帮助,因为我现在可以访问它的控制台了。而这正是我遇到麻烦的地方。
我在 Forge 服务器的父目录中创建了 forge-server.service 文件(如果您不知道的话,允许 mods),然后我使用“ln”将链接放入 /etc/systemd/system。但是,它无法加载。
我收到 code=exited status=1 并且无法启动。我不知道发生了什么。半途,我没有找到屏幕会话。然后,它就失败了。
[Unit]
Description=Forge Server %i
[Service]
WorkingDirectory=/home/<USER>/minecraft/forge-server/%i
User=<USER>
Group=<USER>
Restart=always
ExecStart=/usr/bin/screen -DmS mc-%i /usr/bin/java -Xmx1536M -jar forge*.jar nogui
ExecStop=/usr/bin/screen -p 0 -S mc-%i -X eval 'stuff "say SERVER SHUTTING DOWN. Saving map..."15'
ExecStop=/usr/bin/screen -p 0 -S mc-%i -X eval 'stuff "save-all"15'
ExecStop=/usr/bin/screen -p 0 -S mc-%i -X eval 'stuff "stop"15'
ExecStop=/bin/sleep 2
[Install]
WantedBy=multi-user.target
如果我没有指定这样的工作目录,我会得到 CHDIR200。
如果我在 SSH/screen 会话中执行 Forge*.jar,它就可以正常工作。您能否告诉我哪里出了问题以及如何修复此脚本?
编辑:我明白了。这是我的新 .service 文件;
#!/bin/sh -
[Unit]
Description=Forge Server
[Service]
WorkingDirectory=/home/<USER>/minecraft/forge-server/
User=<USER>
Group=<USER>
Restart=on-failure
ExecStart=/usr/bin/screen -DmS forge /usr/bin/java -Xmx1536M -jar forge-1.10.2-12.18.2.2099-universal.jar nogui
ExecStop=/usr/bin/screen -p 0 -S forge -X eval 'stuff "say SERVER SHUTTING DOWN. Saving map..."15'
ExecStop=/usr/bin/screen -p 0 -S forge -X eval 'stuff "save-all"15'
ExecStop=/usr/bin/screen -p 0 -S forge -X eval 'stuff "stop"15'
ExecStop=/bin/sleep 2
[Install]
WantedBy=multi-user.target
答案1
我明白了。这是我的新 .service 文件;
#!/bin/sh -
[Unit]
Description=Forge Server
[Service]
WorkingDirectory=/home/<USER>/minecraft/forge-server/
User=<USER>
Group=<USER>
Restart=on-failure
ExecStart=/usr/bin/screen -DmS forge /usr/bin/java -Xmx1536M -jar forge-1.10.2-12.18.2.2099-universal.jar nogui
ExecStop=/usr/bin/screen -p 0 -S forge -X eval 'stuff "say SERVER SHUTTING DOWN. Saving map..."15'
ExecStop=/usr/bin/screen -p 0 -S forge -X eval 'stuff "save-all"15'
ExecStop=/usr/bin/screen -p 0 -S forge -X eval 'stuff "stop"15'
ExecStop=/bin/sleep 2
[Install]
WantedBy=multi-user.target
我已将 forge jar 文件设置为可执行文件 (chmod +x) 并删除了所有变量 (从我复制的初始脚本中删除 %i)。它现在可以正常工作,并在启动时在屏幕实例中启动。