Screen安装与使用

发布于 2022-01-23  1 次阅读


Screen是什么

Screen是一个可以在多个进程之间多路复用一个物理终端的全屏窗口管理器。Screen中有会话的概念,用户可以在一个screen会话中创建多个screen窗口,在每一个screen窗口中就像操作一个真实的telnet/SSH连接窗口那样。

安装Screen

CentOS系统可以执行:

yum install screen

创建 Screen 会话

执行:

screen -S xxxx

screen 就会创建一个名字为xxxx的会话。

保留Screen会话

需要临时离开时(会话中的程序不会关闭,仍在运行)可以用快捷键Ctrl+a+d(即按住Ctrl,依次再按a,d)。

恢复Screen会话

回来时可以再执行执行:

screen -r xxxx

即可恢复到离开前创建的xxxx会话的工作界面。如果忘记了,或者当时没有指定会话名,可以执行:

screen -ls

screen 会列出当前存在的会话列表。暂时退出了xxxx会话,所以状态为 Detached,当使用 screen -r xxxx后状态就会变为 Attached,数字是这个 screen 的会话的进程ID,恢复会话时也可以使用:screen -r 数字。

关闭Screen的会话

执行:

exit

提示:[screen is terminating],表示已经成功退出screen会话。

常用快捷键

Ctrl+a c :在当前screen会话中创建窗口
Ctrl+a w :窗口列表
Ctrl+a n :下一个窗口
Ctrl+a p :上一个窗口
Ctrl+a 0-9 :在第0个窗口和第9个窗口之间切换

常用选项:

-ls :列出所有screen窗口
-S :自定义一个名称,创建一个新的screen窗口并自动切换进去
-r :进入到指定screen窗口,可以指定窗口名称或窗口ID
-d :将screen窗口与在连接的会话分离并重新连接到当前会话
Ctrl + A + D :退出当前screen窗口
exit :退出并删除当前的screen窗口

问题

There is no screen to be resumed matching xxxx

原因一:

常常出现在重新连接服务器时,即上次连接后没有主动断开连接(比如突然断网)。

执行

ps all

找到无法连接的screen.

状态为 pause

直接kill掉他:kill -9 <PPID>

kill -9 xxxx

再重新连接:

screen -r xxxx

成功.

原因二:

正常创建的 screen 窗口没有被使用的话,使用 screen -ls 查出来的状态是(Detached);如果你创建的 screen 窗口被其他连接到当前服务器的用户使用了,那么查出来的状态是(Attached)。这个时候你直接使用 screen -r 窗口名称是进不去该窗口的。必须先使用 -d 选项将 screen 窗口和对方的会话断开。才能继续使用。