赞
踩
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 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
TAG:
除非注明,文章均由 Linux系统学习 整理发布,欢迎转载。如有版权争议,请联系删除。
文章评论
留言与评论(共有 0 条评论)
验证码:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。