我screen
用来运行 Minecraft 服务器,并且我每天都会重新启动它。这是我的开始代码:
screen -mdS mcserver
screen -S mcserver -p 0 -X stuff "java -Xmx4G -jar server.jar^M"
这是我的停止代码:
screen -S mcserver -p 0 -X stuff "stop^M"
sleep 10
screen -XS mcserver quit
发送命令stop
会使 Minecraft 服务器拯救世界,这可能需要几秒钟。有没有办法让程序等到java
(Minecraft 服务器)没有运行然后杀死screen
?screen
如果我在发送到 Minecraft 之前杀死stop
,世界可能会出现一些故障。(玩家物品与世界方块不同步,人们丢失物品,并且不小心复制了东西)
对我来说似乎可以编写脚本。您可以尝试像这样简单地做一些事情
这基本上是循环的,直到在进程列表中找不到 server.jar ,然后它才跳出循环。由于循环被破坏,关闭屏幕会话应该是安全的