Screen的安装及使用,在后台运行进程且断开SSH不被杀掉

发布于 2019-08-29  165 次阅读


有时候,我们需要在ssh运行一些进程,并且不能短期完成或需要长期运行的进程,比如上文的Redis以及MInecraft 服务器或其他游戏服务器,QQ机器人等。 大多发行版自带了Screen,但是也有的可能没有,需要手动安装。

#安装Screen

#Ubuntu/Debian
sudo apt-get install screen -y
#Cent OS 7
sudo yum install screen -y
如下载过慢,无法定位软件包,请换源。

#使用方法

#直接新建一个未命名的新窗口
screen
#新建一个名为mcserver的窗口
screen -S mcserver
#新建一个未命名窗口并运行命令(这里为启动minecraft服务器)
screen java -jar mcserver1.8.1.jar
#使用例:新建一个名为mcserver的窗口并启动minecraft服务器
screen -S mcserver java -jar mcserver1.8.1.jar
#列出窗口列表
screen -ls

#会话分离

当我们想退出窗口干点别的事情,但我们不想退出SSH或者不想结束当前进程 Ctrl + a快捷键看见 [detached] 提示并回到主窗口

#恢复会话

我们退出窗口或断开SSH后想回到screen则,screen -ls列出窗口,  screen -r 恢复窗口
pi@raspberrypi:~$ screen -ls
There is a screen on:

2671.count (8/29/2019/8:51:32 PM) (Detached)
pi@raspberrypi:~$ screen -r 2671

#杀死会话

我们不想要运行mc服务器了,我要结束他,则要杀死这个会话并且结束运行的进程 我建议恢复会话后,停止现在的进程并输入exit来杀死会话以保证数据不会丢失损坏
pi@raspberrypi:~$ screen -ls
There is a screen on:

2671.count (8/29/2019/8:51:32 PM) (Detached)
pi@raspberrypi:~$ screen -r 2671
[2019/8/29 20:57]smallxu038 join the game
[2019/8/29 20:58]stop
pi@raspberrypi:~$ exit
直接结束screen进程(不推荐会导致窗口内的进程数据丢失甚至损坏)
pi@raspberrypi:~$ screen -ls
There is a screen on:

2671.count (8/29/2019/8:51:32 PM) (Detached)
pi@raspberrypi:~$ kill -9 2637
pi@raspberrypi:~$
恢复会话Ctrl+a+k直接杀死窗口连同运行的进程,Ctrl + a输入 quit 直接退出窗口并结束运行的进程

#清除死去的窗口

杀死会话后, 再用screen -ls 发现窗口后面会有(???dead)字样,说明窗口死了,但还在占用空间,需要清除
 pi@raspberrypi:~$ screen -wipe  
这样,就解除了占用。

#FAQ

该文档没有FAQ,但我还是要放个FAQ装逼。 :huaji:

欢迎评论


努力学习ing