Linux Screen命令

知识点:
Screen是Linux窗口管理器的命令行界面版本。它提供了从单个SSH会话中统一管理多个shell窗口(会话)的能力。用户可以通过Screen运行一个持久的进程或者同时连接多个本地或远程的命令行会话,并在其间自由切换。当会话被分离或网络中断时,screen 会话中启动的进程仍将运行,并且可以随时重新连接到 screen 会话。

Screen 官方网站:https://www.gnu.org/software/screen/

多窗口:
在Screen环境下,所有的会话窗口都独立的运行,并拥有各自的编号、输入、输出和窗口缓存。用户可以通过快捷键在不同的窗口下切换,并可以自由的重定向各个窗口的输入和输出。

会话恢复:
通过Screen运行一个持久的进程,暂时离开(detach)screen会话(session)窗口后而不中断该窗口中程序的运行,并在随后重新连接(attach)该会话(session)窗口,重新控制在其中运行的程序。

1. 创建会话(session)窗口
创建一个名为test的新会话(session)窗口
screen -S test

2. 暂离会话(session)窗口
在screen窗口键入Ctrl+a, 再按 d,Screen会暂离会话并给出暂时中断会话(detached from xxx)提示。

3. 显示会话(session)列表
若创建了多个 screen 会话,可以使用 ls 参数列出它们。
screen -ls

4. 恢复会话(session)窗口
若从一个会话暂离后,或者由于某些原因连接被中断了,则可以使用下面的命令重新连接会话:
screen -r test 或者 screen -r -S test

5. 终止会话(session)窗口
在命令行窗口中使用 exit 命令终止会话。

若在另一台机器上没有暂离(Detach)Screen会话,则不能恢复会话(session)。这时可以强制将这个会话从它所在的终端暂离,转移到新的终端上来。
screen -d -r test

若因某种原因某个会话(session)挂掉了,此时screen -list命令将显示该会话为dead状态,则可以使用screen -wipe 命令清除该会话。

会话共享
Screen可以让一个或多个用户从不同终端多次登录一个会话,并共享会话的所有特性。它同时提供了窗口访问权限的机制,可以对窗口进行密码保护。

例如:使用SSH终端登录一台机器,在SSH终端上创建一个screen会话(screen -S test),然后在不同地点的其它SSH终端上以相同用户登录同一台机器,则可以使用screen共享命令(screen -x test)共享同一会话,若当前处于同一个会话窗口,则进行的操作将同步演示。

会话锁定与解锁
Screen允许使用快捷键Ctrl + a, 再按 s 键锁定当前会话。当会话锁定以后,任何输入屏幕不会再有反馈,虽然屏幕无反馈,但输入会被Screen中的进程接收并处理。使用快捷键Ctrl + a,再按 q 键可以解锁此会话。

另外,也可以使用Ctrl + a, 再按 x 键锁定会话,而这样锁定会话之后,此会话会被Screen所属用户的密码保护,需要输入相应密码才能继续访问此会话。

常用 screen 命令参数:
screen -S xxx 新建一个名为 xxx 的 session
screen -ls 列出当前所有的 session
screen -r xxx 回到名为 xxx 的 session
screen -d xxx 远程 detach 名为 xxx 的 session
screen -d -r xxx 结束当前 session 并回到名为 xxx 的 session
screen -D -r xxx 结束当前 session,并logout,再回到名为 xxx 的 session。
screen -wipe 删除无法使用的 session

常用 screen 会话窗口操作:
Ctrl + a,c 新建会话
Ctrl + a,d 暂离当前会话
Ctrl + a,s 锁定会话
Ctrl + a,x 锁定会话(需密码解锁)
Ctrl + a,q 解锁会话
Ctrl + a,c 在当前会话中创建一个子会话
Ctrl + a,w 子会话列表
Ctrl + a,p 上一个子会话
Ctrl + a,n 下一个子会话
Ctrl + a,0-9 在第0窗口至第9子会话间切换
Ctrl + a,k 强行关闭当前的 window

8月 22, 2020 | In: Linux

Comment Form

You must be logged in to post a comment.

分类

归档

ipv6 ready