订阅本站
收藏本站
微博分享
QQ空间分享

在Linux系统上安装和使用Screen命令管理多个终端会话

lilin 分类:Linux命令 时间:2020/01/13 22:10:02 评论: 加入收藏

GNU Screen是一个终端多路复用器(窗口管理器),顾名思义,Screen在多个交互式shell之间复用物理终端,因此我们可以在每个终端会话中执行不同的任务,所有Screen会话都完全独立地运行程序。因此,即使会话意外关闭或断开连接,在Screen会话内运行的程序或进程也将继续运行,例如,当通过SSH升级Ubuntu服务器时,Screen命令将继续运行升级过程,以防万一SSH会话因任何原因而终止。GNU Screen允许我们轻松创建多个Screen会话,在不同会话之间切换,在会话之间复制文本,随时附加或分离会话等等,它是每个Linux管理员应该在必要时学习和使用的重要命令工具之一,在本文中,我们将介绍Screen命令的基本用法以及在Linux中的示例。

在Linux系统上<a href=http://8u.hn.cn/linuxaz/ target=_blank class=infotextkey>安装</a>和使用Screen<a href=http://8u.hn.cn/ssh/ target=_blank class=infotextkey>命令</a>管理多个终端会话

 

安装GNU Screen

GNU Screen在大多数Linux操作系统的默认存储库中都可用。

要在Arch Linux上安装GNU Screen,请运行:

$ sudo pacman -S screen

在Debian、Ubuntu、Linux Mint:

$ sudo apt-get install screen

在Fedora上:

$ sudo dnf install screen

参考:dnf命令_Linux dnf命令使用详解:新一代的RPM软件包管理器。

在RHEL、CentOS上:

$ sudo yum install screen

在SUSE/openSUSE上:

$ sudo zypper install screen

 

Screen命令示例-管理多个终端会话

1、创建新的Screen会话

让我们创建一个新的Screen会话并附加到它,为此,请在终端中输入以下命令

screen

现在,在此会话中运行任何程序或进程,即使你与此会话断开连接,正在运行的进程或程序也将继续运行。

要从Screen会话中分离,请按ctrl+a和d,无需同时按下两个组合键,首先按ctrl+a然后按d,从会话中分离后,将看到类似下面的输出:

[detached from 29149.pts-0.sk]

这里,29149是ScreenID,pts-0.sk是Screen会话的名称,可以使用ScreenID或相应会话的名称来附加、分离和终止Screen会话。

2、创建一个命名会话

你还可以创建一个Screen会话,其中包含选择的任何自定义名称,而不是默认用户名,如下所示:

screen -S ywnz

上面的命令将创建一个名为“xxxxx.ywnz”的新Screen会话并立即附加到它,要从当前会话中分离,请按ctrl+a,然后按d。

当想要查找哪些进程在哪些会话上运行时,命名Screen会话会很有用,例如,当在会话中设置LAMP堆栈时,可以简单地将其命名为如下所示:

screen -S lampstack

3、创建分离的会话

有时,可能想要创建会话,但不希望自动附加会话,在这种情况下,运行以下命令以创建名为“senthil”的分离会话:

screen -S senthil -d -m

或者:

screen -dmS senthil

上面的命令将创建一个名为“senthil”的会话,但不会附加到它。

4、列出Screen会话

要列出所有正在运行的会话(附加或分离),请运行:

screen -ls

样本输出:

There are screens on:

29700.senthil (Detached)

29415.ywnz (Detached)

29149.pts-0.sk  (Detached)

3 Sockets in /run/screens/S-sk.

正如你所看到的,我有三个正在运行的会话,并且所有会话都已分离。

如果要随时附加到会话,例如29415.ywnz,只需运行:

screen -r 29415.ywnz

或者:

screen -r ywnz

或者,只需使用screen ID:

screen -r 29415

要验证我们是否附加到上述会话,只需列出打开的会话并检查:

screen -ls

样本输出:

There are screens on:

29700.senthil (Detached)

29415.ywnz (Attached)

29149.pts-0.sk (Detached)

3 Sockets in /run/screens/S-sk.

正如你在上面的输出中看到的那样,我们目前已连接到29415.ywnz会话,要退出当前会话,请按ctrl+a,d。

5、创建nested会话

当我们运行“screen”命令时,它将为我们创建一个会话,但是,我们可以创建nested会话(会话内的会话)。

首先,创建一个新会话或附加到已打开的会话,我将创建一个名为“nested”的新会话:

screen -S nested

现在,在会话中按ctrl+a和c创建另一个会话,只需重复此操作即可创建任意数量的nestedScreen会话,每个会话都将分配一个号码,号码将从0开始。

可以按ctrl+n移动到下一个会话,然后按ctrl+p移动到上一个会话。

以下是管理nested会话的重要键盘快捷键列表:

ctrl+a - 列出所有会话。

ctrl+a 0 - 切换到会话号0。

ctrl+a n - 切换到下一个会话。

ctrl+a p - 切换到上一个会话。

ctrl+a S - 将当前区域水平分割为两个区域。

ctrl+a l - 将当前区域垂直分割为两个区域。

ctrl+a Q - 关闭除当前会话之外的所有会话。

ctrl+a X - 关闭当前会话。

ctrl+a / - 终止所有会话并终止Screen。

ctrl+a ? - 显示键绑定,要退出此按钮,请按ENTER。

6、锁定会话

Screen有一个锁定Screen会话的选项,为此,请按ctrl+a和x,输入你的Linux密码以锁定Screen:

Screen used by sk <sk> on ubuntuserver.

Password:

7、记录会话

可能希望在Screen会话中记录所有内容,为此,只需按ctrl+a和H。

或者,可以在使用-L参数启动新会话时启用日志记录:

screen -L

从现在开始,在会话中完成的所有活动都将记录并存储在$HOME目录中名为screenlog.x的文件中,这里,x是一个数字。

可以使用cat命令或任何文本查看器应用程序查看日志文件的内容。

在Linux系统上<a href=http://8u.hn.cn/linuxaz/ target=_blank class=infotextkey>安装</a>和使用Screen<a href=http://8u.hn.cn/ssh/ target=_blank class=infotextkey>命令</a>管理多个终端会话

8、杀死Screen会话

如果不再需要会话,只需杀死它,要杀死名为“senthil”的分离会话:

screen -r senthil -X quit

要么:

screen -X -S senthil quit

要么:

screen -X -S 29415 quit

如果没有打开的会话,将看到以下输出:

$ screen -ls

No Sockets found in /run/screens/S-sk.

有关更多详细信息,请参阅手册页:

$ man screen

 

TAG:

文章评论

留言与评论(共有 0 条评论)
   
验证码: