我如何创建一个新的屏幕会话并执行命令,但将屏幕保留在那里?

我如何创建一个新的屏幕会话并执行命令,但将屏幕保留在那里?

大家好,我正在尝试让我的 Minecraft 服务器与我的服务器一起启动。一旦我弄清楚了正确的命令是什么,我就会使用 cron。我希望 Minecraft 在名为“Minecraft”的新屏幕中启动,并且我希望向此会话发送启动服务器的命令。每天早上 3 点,我想发送命令“stop”来停止 Minecraft 服务器,然后发送命令启动服务器(如果不时不时重新启动 Minecraft,Minecraft 就会出现错误)。我尝试了屏幕选项,让 Minecraft 启动了几秒钟,然后屏幕将其杀死。从我在网上读到的内容来看,这个命令应该有效。

screen -dmS Minecraft java -Xmx12G -Xms12G -jar /home/alan/minecraft/forge-1.16.5-36.2.30.jar --nogui

我想重新连接到此会话以输入命令或重新启动 Minecraft 服务器,因为我做了更改。我运行的所有命令都不起作用我输入“screen -ls”,但我的“Minecraft”会话不存在。我知道如何使用 cron,但我显然不懂 screen。我们地区经常停电,所以我用 UPS 关闭我的服务器,然后在电源恢复时用 Raspberry PI 将其重新打开。如果能将 Minecraft 添加到我的启动中就好了。之后,我的所有服务都会自动启动和停止,无需我的干预。

答案1

由于您命名了屏幕Minecraft

# Tell Minecraft to gracefully stop.
# Ending Minecraft will terminate Java
# systemd will kill Screen after the 10-second delay. No explicit kill for Screen needed
screen -p 0 -S Minecraft -X eval 'stuff "say SERVER SHUTTING DOWN. Saving map..."\\015'
screen -p 0 -S Minecraft -X eval 'stuff "save-all"\\015'
screen -p 0 -S Minecraft -X eval 'stuff "stop"\\015'
sleep 10

将您的命令包装到 systemd 服务中很容易,这还使您能够在启动时自动启动、进行状态监控,以及使用 systemctl 轻松启动/停止/重启控制。

通常,您不需要担心让屏幕保持打开状态,因为所有输出都已记录,并且所有服务器命令都可以通过管理控制台输入。

几年前,我写了一篇关于整个过程的博客文章:这是http://cheesehead-techblog.blogspot.com/2019/08/toggling-minecraft-server-using-systemd.html

相关内容