如何使用screen命令
大家好,我是良许。
很多时候,我们都需要执行一些需要很长时间的任务。如果这时候,你的网络连接突然断开了,那么你之前所做的所有工作可能都会丢失,所做的工作可能都要重做一遍,这会浪费我们许多的时间,非常影响我们的工作。那么有没有办法可以解决这个问题呢?
答案是肯定的,那就是使用 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
有收获?希望老铁们来个三连击,给更多的人看到这篇文章
如何使用screen命令的更多相关文章
- linux screen 命令详解
一.背景 系统管理员经常需要SSH 或者telent 远程登录到Linux 服务器,经常运行一些需要很长时间才能完成的任务,比如系统备份.ftp 传输等等.通常情况下我们都是为每一个这样的任务开一个远 ...
- linux screen 命令详解[转]
一.背景 系统管理员经常需要SSH 或者telent 远程登录到Linux 服务器,经常运行一些需要很长时间才能完成的任务,比如系统备份.ftp 传输等等.通常情况下我们都是为每一个这样的任务开一个远 ...
- Linux screen 命令
简单的来说 在screen里面敲的命令都是在后台的,所以不需要想bg那样,ctrl+z在bg把后台服务运行起来.而且下次可以直接进去screen作业的后台界面,可以看到我们过去敲的命令记录,即使你的C ...
- linux screen 命令详解(未验证+研究)
一.背景 系统管理员经常需要SSH 或者telent 远程登录到Linux 服务器,经常运行一些需要很长时间才能完成的任务,比如系统备份.ftp 传输等等.通常情况下我们都是为每一个这样的任务开一个远 ...
- screen命令学习
我们有时需要做一些长时间的工作,比如格式化一个20T的raid磁盘,可能需要几个小时以上,如果只是执行格式化的话,由于网络不稳定,或者要下班了,还没格式化完成,关闭了ssh的窗口,命令可能就执行失败了 ...
- Linux下screen命令
//1.列出当前的screenscreen -ls //2.新建一个screen,直接在命令行键入screen命令 screen -S [会话名称][root@www.lnuxidc.com ~]# ...
- [转]linux中强大的screen命令
[转]linux中强大的screen命令 http://pythonorg.diandian.com/post/2012-01-05/40027464147 今天用SCREEN用点生了,有几个功能不知 ...
- Linux screen命令简介
Linux上有的shell脚本运行时候是阻塞的,如果想在屏幕上即能够看到阻塞命令的输出,同时又能够在shell窗口运行其他程序,那么Linux自带的screen命令是非常不错的选择. 1.screen ...
- linux中screen命令的用法
http://www.9usb.net/201002/linux-screen-mingling.html 作为linux服务器管理员,经常要使用ssh登陆到远程linux机器上做一些耗时的操作.也许 ...
- linux之screen命令
linux平台下想同时运行多个操作,执行多个程序或命令:命令行就一个,要想同时执行多个命令如何操作? 一个screen命令即可: Centos操作系统默认没有安装screen: 安装方法: Cento ...
随机推荐
- 使用PowerShell自动编译部署前端
前言 最近在开发一套管理系统,做了前后端分离. 后台使用的是Asp.Net Core 3.1 前端使用的是Vue+Ant Design 自己搞了一台云服务器,打算把系统部署到云服务器上.以供外网访问. ...
- NVIDIA GPU Turing架构简述
NVIDIA GPU Turing架构简述 本文摘抄自Turing官方白皮书:https://www.nvidia.com/content/dam/en-zz/Solutions/design-vis ...
- Spring RestTemplate 的介绍和使用-入门
RestTemplate是什么? 传统情况下在java代码里访问restful服务,一般使用Apache的HttpClient.不过此种方法使用起来太过繁琐.spring提供了一种简单便捷的模板类来进 ...
- 工程能力UP | LightGBM的调参干货教程与并行优化
这是个人在竞赛中对LGB模型进行调参的详细过程记录,主要包含下面六个步骤: 大学习率,确定估计器参数n_estimators/num_iterations/num_round/num_boost_ro ...
- 支持向量机SMO算法实现(注释详细)
一:SVM算法 (一)见西瓜书及笔记 (二)统计学习方法及笔记 (三)推文https://zhuanlan.zhihu.com/p/34924821 (四)推文 支持向量机原理(一) 线性支持向量机 ...
- 一个文本框的各项说明,包括类似html的table
https://www.cnblogs.com/zhqiux/archive/2013/09/03/3298654.html
- state实例
States是SaltStack中的配置语言,在日常进行配置管理时需要编写大量的States文件. 比如我们需要安装一个包,然后管理一个配置文件,最后保证某个服务正常运行. 这里就需要我们编写一些st ...
- c++ string类型举例(递归预习的边界)
#include <iostream> #include <string> using namespace std; int main ( ) { string str; // ...
- java图片压缩工具类(指定压缩大小)
1:先导入依赖 <!--thumbnailator图片处理--> <dependency> <groupId>net.coobird</groupId> ...
- Day07_品牌管理
学于黑马和传智播客联合做的教学项目 感谢 黑马官网 传智播客官网 微信搜索"艺术行者",关注并回复关键词"乐优商城"获取视频和教程资料! b站在线视频 0.学习 ...