Linux screen教程-如何应用Linux的screen来管理会话

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介:

 

原文地址:http://www.rackaid.com/resources/linux-tutorials/general-tutorials/using-screen

 

shell 会话意外断开了,需要多shell会话吧?

正当你通过SSH登录到远程服务器上,兴高采烈地敲击着键盘。突然,字符不闪了,接着看到的是可怕的消息“Connetion Closed(连接断开)”,这时你的 会话已经丢失。唉,你刚刚进行了一半的工作不得不从头再来!好在你可以使用 screen阻止这一切的发生。Linux的screen工具不仅能保存你的会话以防断开连接,它还能通过在同一个SSH会话中使用多个窗口来提高工作效率。

用Linux Screen工具管理会话

Linux
Linux Screen工具可以在连接断开的时候保存会话

Linux下的screen是什么?

按照手册页的话,“ screen是一个全屏窗口管理器,它混合多个工作(通常是交互性shell)到一个终端上”。当你工作在特定的服务器上这可能是救急的。screen包含多个重要特性来帮助你更高效和安全地管理你的服务器。接下来我要谈论三个我使用最多的特性(多窗口,日志,会话),不过要获取完整细节请查看man手册页面。

 在Linux上安装在screen

在大多数的Red Hat发行版上,你会发现/usr/bin/ screen这个文件。要想知道screen的实际路径的话,可认使用which命令:
[admin@ensim admin]$ which screen
要是还没有 screen的话,你可以从针对你的操作系统轻松地安装对应的RPM或其它包文件。在Cobalt Raq 服务器上,你可以安全地使用适合自己操作系统的RedHat RPM包。
Screen RPM包:  rpmfind
Screen 网站: GNU Screen
你可能已经安装了 screen或者已经获取RPM包,我不现叙述从源码编译screen的内容,让我们来继续介绍如何使用screen。

使用screen

可以像其它命令一样直接在命令行中启动 screen
[admin@gigan admin]$ screen
你可能会看到文字信息或者什么也没有。没有提示信息的情况下,你可能认为什么也没发生,实际上你已经在 screen的一个窗口了。除了接受一些特殊字符以外这个程序和正常的shell很相似。(不过)screen使用快捷键“Ctrl-A” 作为信号把命令发送给screen而不是(以往的)shell。若要获取帮助,只需用“Ctrl-A”再按“?”,现在你就会看到screen的帮助页面。
                Screen key bindings, page 1 of 2.
                Command key:  ^A   Literal ^A:  a
break      ^B b       lockscreen ^X x       reset      Z         
clear      C          log        H          screen     ^C c      
colon      :          login      L          select     " '       
copy       ^[ [       meta       a          silence    _         
detach     ^D d       monitor    M          split      S         
digraph    ^V         next       ^@ ^N sp n suspend    ^Z z      
displays   *          number     N          time       ^T t      
fit        F          only       Q          title      A         
flow       ^F f       other      ^A         vbell      ^G        
focus      ^I         pow_break  B          version    v         
help       ?          pow_detach D          width      W         
history            prev       ^P p ^?    windows    ^W w      
info       i          readbuf    <          wrap       ^R r      
kill       K          redisplay  ^L l       writebuf   >         
lastmsg    ^M m       remove     X          xoff       ^S s      
license    ,          removebuf  =          xon        ^Q q      
                 [Press Space for next page; Return to end.]
按键绑定(Key bindings)指的是按下“Ctrl-A”后 screen接受的命令。如果喜欢的话,你可以使用 .screerc 文件来重新设置这些按键,不过我使用的是默认的。

Multiple Windows多窗口

screen,像许多的窗口管理器一样,能支持多窗口。这个功能在处理多个任务且同时没有打开新的会话时很有用。作为一个系统管理员,我常常要同时开四五个SSH会话。在每个shell下,我可能要处理两三个任务。不使用screen的话,需要15个SSH会话,15次登录,15个窗口等等。使用screen,每个系统都分配到一个单独的会话中,我通过screen来管理系统上不同的作业。
要打开新的窗口,只需要使用“Ctrl-A”“c”。创建的新的窗口会显示一个默认的命令提示符。例如,我可以运行top命令后再打开一个新的窗口来做其它的工作。Top继续留在那运行!可以亲身实验一下,启动 screen并运行top。(注:为了节省空间我截断了多个屏幕。)
启动top
Mem:   506028K av,  500596K used,    5432K free,       
0K shrd,   11752K buff
Swap: 1020116K av,   53320K used,  966796K free        
          393660K cached
  PID USER     PRI  NI  SIZE  RSS SHARE STAT %CPU %ME
 6538 root      25   0  1892 1892   596 R    49.1  0.3
 6614 root      16   0  1544 1544   668 S    28.3  0.3
 7198 admin     15   0  1108 1104   828 R     5.6  0.2
现在可以通过“Ctrl-A”“c”来打开一个新窗口
[admin@ensim admin]$ 
To get back to top, use "Ctrl-A "n"
Mem:   506028K av,  500588K used,    5440K free,       
0K shrd,   11960K buff
Swap: 1020116K av,   53320K used,  966796K free        
          392220K cached
  PID USER     PRI  NI  SIZE  RSS SHARE STAT %CPU %ME
 6538 root      25   0  1892 1892   596 R    48.3  0.3
 6614 root      15   0  1544 1544   668 S    30.7  0.3
你可以创建多个窗口然后通过“Ctrl-A”“n”切换到下一个窗口,或者使用“Ctrl-A”“p”返回上一个窗口。当你在其它窗口工作时,其它窗口的每个程序都会保持运行。

退出screen

有两种方式退出 screen。第一种和登出一个shell一样,你可以通过“Ctrl-A”“K”或者“exit”来终止一个窗口。这样当前的窗口会被关闭,如果你打开了多个窗口,你就会直接转到其余中的一个,而如果是仅有的一个窗口时,你就退出了screen。
另外一种退出 screen的方式是分离窗口。这种方式只是简单地关闭了窗口但进程仍运行着。如果你有确定要长时间执行的进程,还需要关闭SSH程序时,你便可以使用“Ctrl-A”“d”分离窗口。这会使你回到shell中。所有的screen窗口都待在那里,你可以稍后重新接管它们。( 译者注:这很像我们实际中的最小化窗口和程序后台运行

接管会话

假设你正用着 screen花了很长时间编译着一个程序,突然间你的连接断开了。请不用担心,screen会保存你的编译进度。重新登录你的操作系统后使用screen列表工具查看有哪些会话正在运行:
[root@gigan root]# screen -ls
There are screens on:
        31619.ttyp2.gigan       (Detached)
        4731.ttyp2.gigan        (Detached)
2 Sockets in /tmp/screens/S-root.
在这里,我有两个不同的 screen会话。要需要重新接管其中一个,使用恢复窗口的命令:
[root@gigan root]#screen -r 31619.ttyp2.gigan
只需要使用 -r 选项再接 会话的名,现在你便可以重新回到刚才的屏幕。令人欣喜的是,你还可以在任何地方重新接管。不论在办公室还是其它客户端上,你都可以使用 screen来启动一项工作然后退出。

屏幕记录

As a consultant, I find it important to keep track of what I do to someone's server. Fortunately,  screen makes this easy. Using "Ctrl-A" "H", creates a running log of the session. Screen will keep appending data to the file through multiple sessions. Using the log function is very useful for capturing what you have done, especially if you are making a lot of changes. If something goes awry, you can look back through your logs.作为一名顾问,我发现记录我在别人的服务器上的操作很重要。所幸,screen可以轻松地通过使用“Ctrl-A”“H”,来建立一个实时的会话日志来实现。screen会把多个会话的数据添加到文件中。使用日志记录函数捕捉你的操作非常有用,特别是当你做了很多改变的时候。如果失误了,可以通过查看日志来恢复。

linux screen使用技巧

我再来谈一谈其它使用 screen的很酷的技巧。screen可以监控一个窗口是活动的还是空闲的。这在下载大文件、编译或是需要查看输出的时候很重要。如果你下载一些东西或者编译,你可以后台查看。转到你想监控的screen下,使用“Ctrl+A”“M”来查看活动状态或者使用“Ctrl+A”“_”来后台查看。打开或者切换到新的窗口,当检测到活动或者空闲时,下方会提示带有窗口的序号的消息。可以使用“Ctrl+A”“"”(单引号)快速地切换到这个窗口,然后键入这个窗口的编号来停止监控。转到这个窗口并重新监控也使相同的命令。

Reference引用

《Linux Magazine 》2003年1月105期,作者: Adam Lazur ,有变动。更多信息来源man帮助页。




     本文转自xiaoyuwang 51CTO博客,原文链接:http://blog.51cto.com/wangxiaoyu/210661,如需转载请自行联系原作者


相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
6天前
|
消息中间件 Java Kafka
【手把手教你Linux环境下快速搭建Kafka集群】内含脚本分发教程,实现一键部署多个Kafka节点
本文介绍了Kafka集群的搭建过程,涵盖从虚拟机安装到集群测试的详细步骤。首先规划了集群架构,包括三台Kafka Broker节点,并说明了分布式环境下的服务进程配置。接着,通过VMware导入模板机并克隆出三台虚拟机(kafka-broker1、kafka-broker2、kafka-broker3),分别设置IP地址和主机名。随后,依次安装JDK、ZooKeeper和Kafka,并配置相应的环境变量与启动脚本,确保各组件能正常运行。最后,通过编写启停脚本简化集群的操作流程,并对集群进行测试,验证其功能完整性。整个过程强调了自动化脚本的应用,提高了部署效率。
【手把手教你Linux环境下快速搭建Kafka集群】内含脚本分发教程,实现一键部署多个Kafka节点
|
13天前
|
Ubuntu Linux C++
Win10系统上直接使用linux子系统教程(仅需五步!超简单,快速上手)
本文介绍了如何在Windows 10上安装并使用Linux子系统。首先,通过应用商店安装Windows Terminal和Linux系统(如Ubuntu)。接着,在控制面板中启用“适用于Linux的Windows子系统”并重启电脑。最后,在Windows Terminal中选择安装的Linux系统即可开始使用。文中还提供了注意事项和进一步配置的链接。
35 0
|
1月前
|
Linux Python
Linux 中某个目录中的文件数如何查看?这篇教程分分钟教会你!
在 Linux 系统中,了解目录下文件数量是常见的需求。本文介绍了四种方法:使用 `ls` 和 `wc` 组合、`find` 命令、`tree` 命令以及编程实现(如 Python)。每种方法都附有详细说明和示例,适合不同水平的用户学习和使用。掌握这些技巧,可以有效提升系统管理和日常使用的效率。
606 6
|
1月前
|
缓存 Linux 开发者
Linux内核中的并发控制机制:深入理解与应用####
【10月更文挑战第21天】 本文旨在为读者提供一个全面的指南,探讨Linux操作系统中用于实现多线程和进程间同步的关键技术——并发控制机制。通过剖析互斥锁、自旋锁、读写锁等核心概念及其在实际场景中的应用,本文将帮助开发者更好地理解和运用这些工具来构建高效且稳定的应用程序。 ####
46 5
|
1月前
|
Linux Python
Linux 中某个目录中的文件数如何查看?这篇教程分分钟教会你!
在 Linux 系统中,了解目录下的文件数量是常见的需求。本文介绍了多种方法,包括使用 `ls` 和 `wc` 命令组合、`find` 命令、`tree` 命令以及编程方式(如 Python)。无论你是新手还是有经验的用户,都能找到适合自己的方法。掌握这些技巧将提高你在 Linux 系统中的操作效率。
56 4
|
2月前
|
Linux Docker 容器
Centos安装docker(linux安装docker)——超详细小白可操作手把手教程,包好用!!!
本篇博客重在讲解Centos安装docker,经博主多次在不同服务器上测试,极其的稳定,尤其是阿里的服务器,一路复制命令畅通无阻。
2353 4
Centos安装docker(linux安装docker)——超详细小白可操作手把手教程,包好用!!!
|
1月前
|
存储 安全 关系型数据库
Linux系统在服务器领域的应用与优势###
本文深入探讨了Linux操作系统在服务器领域的广泛应用及其显著优势。通过分析其开源性、安全性、稳定性和高效性,揭示了为何Linux成为众多企业和开发者的首选服务器操作系统。文章还列举了Linux在服务器管理、性能优化和社区支持等方面的具体优势,为读者提供了全面而深入的理解。 ###
|
2月前
|
存储 数据可视化 Java
震惊!如何在linux下部署项目,部署/运行jar包 超详细保姆级教程!
如何在Linux系统下部署和运行Java项目jar包,包括传输文件到Linux、使用nohup命令运行jar包、查看端口状态、杀死进程和查看项目运行状态,以及如何解决“没有主清单属性”的错误。
689 1
震惊!如何在linux下部署项目,部署/运行jar包 超详细保姆级教程!
|
2月前
|
关系型数据库 MySQL Linux
基于阿里云服务器Linux系统安装Docker完整图文教程(附部署开源项目)
基于阿里云服务器Linux系统安装Docker完整图文教程(附部署开源项目)
514 3
|
2月前
|
Linux C语言 C++
vsCode远程执行c和c++代码并操控linux服务器完整教程
这篇文章提供了一个完整的教程,介绍如何在Visual Studio Code中配置和使用插件来远程执行C和C++代码,并操控Linux服务器,包括安装VSCode、安装插件、配置插件、配置编译工具、升级glibc和编写代码进行调试的步骤。
410 0
vsCode远程执行c和c++代码并操控linux服务器完整教程