首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果屏幕会话没有正在运行的进程,如何杀死它?

如果屏幕会话没有正在运行的进程,如何杀死它?
EN

Ask Ubuntu用户
提问于 2020-01-07 14:36:14
回答 1查看 2.9K关注 0票数 0

我使用screen来运行“我的世界”服务器,并且每天重新启动它。这是我的起始代码:

代码语言:javascript
复制
screen -mdS mcserver
screen -S mcserver -p 0 -X stuff "java -Xmx4G -jar server.jar^M"

这是我的停车代码:

代码语言:javascript
复制
screen -S mcserver -p 0 -X stuff "stop^M"
sleep 10
screen -XS mcserver quit

发送命令stop可以使“我的世界”服务器拯救世界,这需要几秒钟的时间。有没有办法让程序等到java (我的服务器)没有运行,然后杀死screen?如果我在把screen发送到“我的世界”之前杀了stop,这个世界可能会有一些小问题。(播放器项目从世界块,人们失去项目,不小心重复的东西)

EN

回答 1

Ask Ubuntu用户

回答已采纳

发布于 2020-01-07 14:49:14

对我来说是个剧本。你可以试着做这样简单的事情

代码语言:javascript
复制
#!/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,然后它就会从循环中分离出来。由于循环中断,所以关闭屏幕会话应该是安全的。

票数 0
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/1201252

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档