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