Linux screen命令详解
开源Linux
长按二维码加关注~
上一篇:局域网IP冲突罪魁祸首是谁?
很多时候,我们都需要执行一些需要很长时间的任务。如果这时候,你的网络连接突然断开了,那么你之前所做的所有工作可能都会丢失,所做的工作可能都要重做一遍,这会浪费我们许多的时间,非常影响我们的工作。那么有没有办法可以解决这个问题呢?
答案是肯定的,那就是使用 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 命令有疑问,请留言告诉我呗!
- End -
Linux screen命令详解的更多相关文章
- [转帖]linux screen 命令详解,xshell关掉窗口或者断开连接,查看断开前执行的命令
linux screen 命令详解,xshell关掉窗口或者断开连接,查看断开前执行的命令 https://binwaer.com/post/12.html yun install -y screen ...
- linux screen 命令详解
一.背景 系统管理员经常需要SSH 或者telent 远程登录到Linux 服务器,经常运行一些需要很长时间才能完成的任务,比如系统备份.ftp 传输等等.通常情况下我们都是为每一个这样的任务开一个远 ...
- linux screen 命令详解[转]
一.背景 系统管理员经常需要SSH 或者telent 远程登录到Linux 服务器,经常运行一些需要很长时间才能完成的任务,比如系统备份.ftp 传输等等.通常情况下我们都是为每一个这样的任务开一个远 ...
- linux screen 命令详解(未验证+研究)
一.背景 系统管理员经常需要SSH 或者telent 远程登录到Linux 服务器,经常运行一些需要很长时间才能完成的任务,比如系统备份.ftp 传输等等.通常情况下我们都是为每一个这样的任务开一个远 ...
- linux screen 命令详解(转载)
转载于:http://www.cnblogs.com/mchina/archive/2013/01/30/2880680.html 一.背景 系统管理员经常需要SSH 或者telent 远程登录到Li ...
- 转 linux screen 命令详解
一.背景 系统管理员经常需要SSH 或者telent 远程登录到Linux 服务器,经常运行一些需要很长时间才能完成的任务,比如系统备份.ftp 传输等等.通常情况下我们都是为每一个这样的任务开一个远 ...
- (转)linux screen 命令详解
转自:http://www.cnblogs.com/mchina/archive/2013/01/30/2880680.html 一.背景 系统管理员经常需要SSH 或者telent 远程登录到Lin ...
- linux awk命令详解
linux awk命令详解 简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分 ...
- linux cat 命令详解
linux cat 命令详解 http://linux.chinaunix.net/techdoc/system/2007/11/16/972467.shtml adb shell su //这个不一 ...
随机推荐
- 面试问题之计算机网络:简述TCP和UDP的区别以及优缺点
转载于:https://blog.csdn.net/liulin1207/article/details/80960964 一.TCP: TCP是面向连接的通讯协议,通过三次握手建立连接,通讯完成时四 ...
- 转载:STL常用容器的底层数据结构实现
转载至:https://blog.csdn.net/qq_28584889/article/details/88763090 vector :底层数据结构为数组,支持快速随机访问 list:底层数据结 ...
- List、Set、Map 和 Queue 之间的区别?
List 是一个有序集合,允许元素重复.它的某些实现可以提供基于下标值的常量 访问时间,但是这不是 List 接口保证的.Set 是一个无序集合.
- 有哪些类型的通知Advice?
Before - 这些类型的 Advice 在 joinpoint 方法之前执行,并使用 @Before 注解标记进行配置. After Returning - 这些类型的 Advice 在连接点方法 ...
- 经历了源码的痛苦,掌握DRF的核心序列化器
目录 DRF的核心--序列化器 序列化器 什么是序列化和反序列化? 序列化 序列化demo 字段类型 字段参数 序列化自定制返回字段 方法一:在序列化类(serializers.py)中写 方法二:在 ...
- 时间工具类之"获取相差天数"
一.时间工具类DateUtils之"获取相差天数" 1 /** 2 * 相差天数 3 * 4 * <p>TODO 方法功能描述 5 * 6 * @param start ...
- 理解OIDC协议和认证机制
当互联网应用越来越多,每个应用程序都实现了自己的身份存储.认证和授权,用户需要在应用上反复的注册与登录,体验糟糕,用户身份信息无法在多个应用间共享与同步.当使用企业应用时,企业提供了一系列应用,尽管是 ...
- 4.7 ROS分布式通信
4.7 ROS分布式通信 ROS是一个分布式计算环境.一个运行中的ROS系统可以包含分布在多台计算机上多个节点.根据系统的配置方式,任何节点可能随时需要与任何其他节点进行通信. 因此,ROS对网络配置 ...
- canvas元素内容生成图像文件
准备工作 想要将canvas元素当前显示的内容生成为图像文件,我们首先要获取canvas中的数据,在HTML5 <canvas>元素的标准中提供了toDataURL()的方法可以将canv ...
- canvas实现平铺水印
欲实现的水印平铺的效果图如下: 从图上看,应该做到以下几点: 文字在X和Y方向上进行平铺: 文字进行了一定的角度的旋转: 水印作为背景,其z-index位置应位于页面内容底部, 即不能覆盖页面主内容: ...