你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

Screen 这个实用工具的一些功能以及用法

[复制链接]
gaosmile 发布时间:2020-8-13 21:32

很多时候,我们都需要执行一些需要很长时间的任务。如果这时候,你的网络连接突然断开了,那么你之前所做的所有工作可能都会丢失,所做的工作可能都要重做一遍,这会浪费我们许多的时间,非常影响我们的工作。那么有没有办法可以解决这个问题呢?

答案是肯定的,那就是使用 screen 命令。screen 命令允许用户在一个窗口内使用多个终端会话,可以断开连接,也可以重新连接已断开连接的会话。每个会话都可以恢复连接,这样就算会话断开了,用户也不必担心数据丢失,这正好解决了我们的问题。

因此,想与大家分享 Screen 这个实用工具的一些功能以及用法:



安装 Screen

现在许多的 Linux 发行版通常都预装了 Screen 。通过运行以下命令,可以查看系统是否安装了 Screen :


  1. $ screen --version
  2. Screen version 4.06.02 (GNU) 23-Oct-17
复制代码

如果你的系统并未安装 Screen ,则可以执行以下命令来安装:

  1. <font style="background-color:rgb(255, 255, 255)"><font face="Tahoma"><font color="black">
  2. $ sudo apt install screen</font></font></font>
复制代码


启动 Screen 会话

想要启动一个 Screen 会话,只需输入以下命令:


  1. $ screen
复制代码

输入 screen 命令后,你会看到一个布满版权信息的界面,你只需按回车或者空格键就可以跳过这个界面。跳过之后,你就可以看到终端界面了。这个终端和原来的终端并没有什么不同,你一样可以浏览文件夹,打开文件,在原来的终端中能做到的事情,它也可以做到。

你也可以在启动 Screen 会话时,使用 -S 参数给会话起名字。例如,我想启动一个叫 alvin 的 Screen 会话:

  1. <font style="background-color:rgb(255, 255, 255)"><font face="Tahoma"><font color="black">
  2. $ screen -S alvin</font></font></font>
复制代码

当你启动了不止一个 Screen 会话时,这可以用来区分其他 Screen 会话。

进入 Screen 终端后,按 Ctrl a+? 快捷键,可以查看 Screen 所附带的所有命令:

微信图片_20200813213109.png markdown


分离与重新连接 Screen 会话

假如你要更新系统,你输入更新命令后,是需要等待很长时间才更新完毕的。这时,如果你没用 screen 命令,一旦你的网络连接断开了,那么更新就会被打断,你就必须要重新开始更新。

Screen 会话的分离功能可以解决这个问题。你可以进入 Screen 终端里执行更新命令,然后输入会话分离快捷键 Ctrl a+d ,你会看到以下提示信息:

微信图片_20200813213112.png markdown

这就表示你已经成功从 Screen 会话中分离出来并回到原来的 Shell 会话中了。这时,Screen 会话会继续留在后台执行更新任务。而且无论是网络断开连接,还是关闭原来的 Shell 会话,它都不会受到影响。

当然,如果你来不及按会话分离快捷键网络就断开了,Screen 会话也不会关闭,它一样会继续留在后台执行更新任务。

如果你想重新连接到已分离的 Screen 会话,以查看更新进程,只需执行以下命令:

  1. <font style="background-color:rgb(255, 255, 255)"><font face="Tahoma"><font color="black">
  2. $ screen -r</font></font></font>
复制代码

需要注意的是,该命令只适用于当前终端只启动了一个 Screen 会话的情况。



嵌套 Screen 会话

嵌套 Screen 会话,顾名思义,就是 Screen 会话中的 Screen 会话,是实现用户在一个窗口中使用多个终端的方法之一。

想要启动一个嵌套 Screen 会话很简单,你只需要在 Screen 终端再次输入 screen 命令,或者按 Ctrl a+c 快捷键,这会在你原来的 Screen 会话中再启动一个 Screen 会话,而原来的 Screen 会话则会在后台保持活动。

例如,你运行了 top 命令来监控系统的 CPU 的使用情况:


  1. $ top
复制代码


微信图片_20200813213116.png markdown

而你既不想关掉这个 top 进程,又想同时做其他的任务,那么你就可以使用 Ctrl a+c 快捷键来启动一个新的 Screen 会话,这样,你既可以保持 top 命令在后台运行,又可以去执行其他的任务。

而如果你想切换回执行 top 命令的 Screen 会话,可以使用快捷键 Ctrl a+n (切换至下一个 Screen 会话)或者 Ctrl a+p (切换至上一个 Screen 会话)进行切换。



分离并启动新的 Screen 会话

从 Screen 会话中分离出来再启动新的 Screen 会话,也可以实现用户在一个窗口中使用多个终端。

例如,你启动一个 Screen 会话,然后输入 df -h 来查看硬盘的使用情况:


  1. $ df -h
复制代码


微信图片_20200813213120.png markdown

然后你可以按 Ctrl a+d 快捷键从 Screen 会话中分离出来,回到原来的终端。这时你就可以再次输入 screen 命令启动一个新的 Screen 会话来执行其他的任务。

如果你想重新连接回运行 df -h 命令的 Screen 会话,则需要先从新的 Screen 会话中分离出来,然后尝试输入 screen -r 命令。这时,由于你并行启动了多个 Screen 会话,然而 screen 命令并不知道你想要重新连接到哪个会话中,因此,你会看到以下提示信息:

微信图片_20200813213124.png markdown

从图中可以看到,每个 Screen 会话都有自己的 ID( 4352 与 4294 )以及自己的名字( pts-0.lxlinux )。这里可以看到两个会话的名字都是 pts-0.lxlinux ,那是因为我启动 Screen 会话的时候,没有指定名字,因此它们都以默认的名字作为自己的名字。

想要重新连接到运行 df -h 命令的 Screen 会话,你只需在 screen -r 命令后面再加上会话的 ID 就可以了,像这样:

  1. <font style="background-color:rgb(255, 255, 255)"><font face="Tahoma"><font color="black">
  2. $ screen -r 4352</font></font></font>
复制代码

当然,如果在启动 Screen 会话时,你给会话指定了独一无二的名字,那么你也可以通过会话的名字来指定重新连接到哪个会话,例如,重新连接到名字为 alvin 的会话:

  1. <font style="background-color:rgb(255, 255, 255)"><font face="Tahoma"><font color="black">
  2. $ screen -r alvin</font></font></font>
复制代码

如果你并不知道 Screen 会话的 ID 以及名字,你也可以通过以下命令来查看:

  1. <font style="background-color:rgb(255, 255, 255)"><font face="Tahoma"><font color="black">
  2. $ screen -ls</font></font></font>
复制代码


关闭 Screen 会话

要关闭 Screen 会话很简单,就和关闭平常的会话一样,你可以使用 Ctrl d 快捷键,也可以输入 exit 命令关闭:


  1. $ exit
复制代码


微信图片_20200813213127.png markdown



善用 Screen

在工作中,我们总会遇到需要执行较长时间才能完成的任务,如果在执行这些任务的过程中,遇到网络中断,那将会导致数据丢失以及时间的浪费,这将严重影响我们的工作。Screen 允许会话断开后进程在后台继续运行,且支持从断点恢复进程,这很好地解决了这问题。

而且 screen 命令还使我们可以利用一个窗口来同时执行多个任务,这对我们工作是非常有用的。因此,为了避免数据丢失以及节省时间,我们应该多用 screen 命令。最后,如果你还对 screen 命令有疑问,请留言告诉我呗!

收藏 评论0 发布时间:2020-8-13 21:32

举报

0个回答

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版