大家好,我是良许。
很多时候,咱们都须要执行一些须要很长时间的工作。如果这时候,你的网络连接忽然断开了,那么你之前所做的所有工作可能都会失落,所做的工作可能都要重做一遍,这会节约咱们许多的工夫,十分影响咱们的工作。那么有没有方法能够解决这个问题呢?
答案是必定的,那就是应用 screen
命令。screen
命令容许用户在一个窗口内应用多个终端会话,能够断开连接,也能够从新连贯已断开连接的会话。每个会话都能够复原连贯,这样就算会话断开了,用户也不用放心数据失落,这正好解决了咱们的问题。
因而,良许想与大家分享 Screen 这个实用工具的一些性能以及用法:
装置 Screen
当初许多的 Linux 发行版通常都预装了 Screen。通过运行以下命令,能够查看零碎是否装置了 Screen:
$ screen --version
Screen version 4.06.02 (GNU) 23-Oct-17
如果你的零碎并未装置 Screen,则能够执行以下命令来装置:
$ sudo apt install screen
启动 Screen 会话
想要启动一个 Screen 会话,只需输出以下命令:
$ screen
输出 screen
命令后,你会看到一个布满版权信息的界面,你只需按回车或者空格键就能够跳过这个界面。跳过之后,你就能够看到终端界面了。这个终端和原来的终端并没有什么不同,你一样能够浏览文件夹,关上文件,在原来的终端中能做到的事件,它也能够做到。
你也能够在启动 Screen 会话时,应用 -S
参数给会话起名字。例如,我想启动一个叫 alvin
的 Screen 会话:
$ screen -S alvin
当你启动了不止一个 Screen 会话时,这能够用来辨别其余 Screen 会话。
进入 Screen 终端后,按 Ctrl a+?
快捷键,能够查看 Screen 所附带的所有命令:
拆散与从新连贯 Screen 会话
如果你要更新零碎,你输出更新命令后,是须要期待很长时间才更新结束的。这时,如果你没用 screen
命令,一旦你的网络连接断开了,那么更新就会被打断,你就必须要从新开始更新。
Screen 会话的拆散性能能够解决这个问题。你能够进入 Screen 终端里执行更新命令,而后输出会话拆散快捷键 Ctrl a+d
, 你会看到以下提示信息:
这就示意你曾经胜利从 Screen 会话中分离出来并回到原来的 Shell 会话中了。这时,Screen 会话会持续留在后盾执行更新工作。而且无论是网络断开连接,还是敞开原来的 Shell 会话,它都不会受到影响。
当然,如果你来不及按会话拆散快捷键网络就断开了,Screen 会话也不会敞开,它一样会持续留在后盾执行更新工作。
如果你想从新连贯到已拆散的 Screen 会话,以查看更新过程,只需执行以下命令:
$ screen -r
须要留神的是,该命令只实用于以后终端只启动了一个 Screen 会话的状况。
嵌套 Screen 会话
嵌套 Screen 会话,顾名思义,就是 Screen 会话中的 Screen 会话,是实现用户在一个窗口中应用多个终端的办法之一。
想要启动一个嵌套 Screen 会话很简略,你只须要在 Screen 终端再次输出 screen
命令,或者按 Ctrl a+c
快捷键,这会在你原来的 Screen 会话中再启动一个 Screen 会话,而原来的 Screen 会话则会在后盾放弃流动。
例如,你运行了 top
命令来监控零碎的 CPU 的应用状况:
$ top
而你既不想关掉这个 top
过程,又想同时做其余的工作,那么你就能够应用 Ctrl a+c
快捷键来启动一个新的 Screen 会话,这样,你既能够放弃 top
命令在后盾运行,又能够去执行其余的工作。
而如果你想切换回执行 top
命令的 Screen 会话,能够应用快捷键 Ctrl a+n
(切换至下一个 Screen 会话)或者 Ctrl a+p
(切换至上一个 Screen 会话)进行切换。
拆散并启动新的 Screen 会话
从 Screen 会话中分离出来再启动新的 Screen 会话,也能够实现用户在一个窗口中应用多个终端。
例如,你启动一个 Screen 会话,而后输出 df -h
来查看硬盘的应用状况:
$ df -h
而后你能够按 Ctrl a+d
快捷键从 Screen 会话中分离出来,回到原来的终端。这时你就能够再次输出 screen
命令启动一个新的 Screen 会话来执行其余的工作。
如果你想从新连贯回运行 df -h
命令的 Screen 会话,则须要先从新的 Screen 会话中分离出来,而后尝试输出 screen -r
命令。这时,因为你并行启动了多个 Screen 会话,然而 screen
命令并不知道你想要从新连贯到哪个会话中,因而,你会看到以下提示信息:
从图中能够看到,每个 Screen 会话都有本人的 ID(4352 与 4294)以及本人的名字(pts-0.lxlinux
)。这里能够看到两个会话的名字都是 pts-0.lxlinux
,那是因为我启动 Screen 会话的时候,没有指定名字,因而它们都以默认的名字作为本人的名字。
想要从新连贯到运行 df -h
命令的 Screen 会话,你只需在 screen -r
命令前面再加上会话的 ID 就能够了,像这样:
$ screen -r 4352
当然,如果在启动 Screen 会话时,你给会话指定了举世无双的名字,那么你也能够通过会话的名字来指定从新连贯到哪个会话,例如,从新连贯到名字为 alvin
的会话:
$ screen -r alvin
如果你并不知道 Screen 会话的 ID 以及名字,你也能够通过以下命令来查看:
$ screen -ls
敞开 Screen 会话
要敞开 Screen 会话很简略,就和敞开平时的会话一样,你能够应用 Ctrl d
快捷键,也能够输出 exit
命令敞开:
$ exit
善用 Screen
在工作中,咱们总会遇到须要执行较长时间能力实现的工作,如果在执行这些工作的过程中,遇到网络中断,那将会导致数据失落以及工夫的节约,这将重大影响咱们的工作。Screen 容许会话断开后过程在后盾持续运行,且反对从断点复原过程,这很好地解决了这问题。
而且 screen
命令还使咱们能够利用一个窗口来同时执行多个工作,这对咱们工作是十分有用的。因而,为了防止数据失落以及节省时间,咱们应该多用 screen
命令。最初,如果你还对 screen
命令有疑难,请留言通知我呗!
最初,最近很多小伙伴找我要 Linux 学习路线图 ,于是我依据本人的教训,利用业余时间熬夜肝了一个月,整顿了一份电子书。无论你是面试还是自我晋升,置信都会对你有帮忙!
收费送给大家,只求大家金指给我点个赞!
电子书 | Linux 开发学习路线图
也心愿有小伙伴能退出我,把这份电子书做得更完满!
有播种?心愿老铁们来个三连击,给更多的人看到这篇文章
举荐浏览:
- 干货 | 程序员进阶架构师必备资源免费送
- 神器 | 反对搜寻的资源网站