我使用screen来运行“我的世界”服务器,并且每天重新启动它。这是我的起始代码:
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可以使“我的世界”服务器拯救世界,这需要几秒钟的时间。有没有办法让程序等到java (我的服务器)没有运行,然后杀死screen?如果我在把screen发送到“我的世界”之前杀了stop,这个世界可能会有一些小问题。(播放器项目从世界块,人们失去项目,不小心重复的东西)
发布于 2020-01-07 14:49:14
对我来说是个剧本。你可以试着做这样简单的事情
#!/bin/bash
#Stop the minecraft server
screen -S mcserver -p 0 -X stuff "stop^M"
while true
do
echo "checking for java..."
sleep 2
ps aux |grep 'server.jar' |grep -v grep
[ $? -eq 1 ] && break
done
screen -XS mcserver quit这个循环基本上是循环,直到在进程列表中找不到server.jar,然后它就会从循环中分离出来。由于循环中断,所以关闭屏幕会话应该是安全的。
https://askubuntu.com/questions/1201252
复制相似问题