使用GNU Screen管理持久终端会话

介绍

GNU Screen是一种与终端会话配合使用的工具,允许用户在断开连接后恢复会话。Screen可防止会话“超时”或断开SSH连接或本地终端仿真器。单个Screen会话具有托管多个会话或“窗口”的能力。Screen可用于各种任务,例如在终端环境中维护持久性IRC会话和多任务。

Screen可在任何Unix / Linux环境(例如您的腾讯云CVM服务器)和Mac OS X上运行。没有服务器的同学可以在这里购买,不过我个人更推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后再购买服务器

安装GNU Screen

本节介绍如何在许多不同的系统上安装Screen。已经提供了示例以简化安装过程。

安装Screen时,您将需要root权限。提供的示例不使用root帐户。如果您使用root登录,则不需要命令之前的sudo前缀。

对于Debian或Ubuntu系统,请使用以下命令更新,升级和安装Screen:

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install screen

对于CentOS或Fedora系统,请使用以下命令更新系统并安装Screen:

sudo yum update
sudo yum install screen

对于Arch Linux系统,以下命令用于更新和安装Screen:

sudo pacman -Sy
sudo pacman -S screen

对于Gentoo系统,以下命令用于更新和安装Screen:

sudo emerge --sync
sudo emerge screen

默认情况下,Screen安装在Mac OS X系统上,可以在没有任何其他准备的情况下使用。

Screen基础知识

要使用具有Screen会话的应用程序,请执行以下操作:

  • 在终端提示符下输入screen命令。
  • Screen运行后,输入应用程序或程序命令,例如irssimutt

您的终端会话将照常运行。要结束当前会话而不影响任何正在运行的进程,请输入Ctrl+a+d或退出终端应用程序。退出会话后,您将返回到Screen前提示。Screen会话和应用程序将继续运行。您可以随时使用screen -r命令重新连接到您的会话。

管理Screen附件

发出screen -r命令后,您将重新连接到上一个分离的会话。可以有多个Screen会话以及多个分离会话。当您尝试重新连接到会话时,可能会显示分离的Screen列表。每个会话都有一个进程ID或PID。因此,要确定要重新连接的会话,请使用screen -ls命令显示所有Screen会话及其PID。以下是screen -ls命令的示例:

user:~$ screen -r
There are several suitable screens on:
25028.pts-19.XXX-serv8  (01/06/2014 08:15:34 PM)    (Attached)
24658.pts-19.XXX-serv8  (01/06/2014 08:11:38 PM)    (Detached)
24509.pts-19.XXX-serv8  (01/06/2014 08:10:00 PM)    (Detached)
18676.pts-5.XXX-serv8   (01/05/2014 08:55:33 PM)    (Attached)

要使用PID重新连接到Screen会话,请使用以下语法:

screen -r <24658>

如果您想要的Screen已经附加但是您看不到它,则有许多用于调用Screen的命令行参数。以下是不同的选项:

  • screen -dr - 将正在运行的Screen与其当前会话分离,并在本地计算机上重新连接会话。
  • screen -x - 附加到正在运行的会话而不从其当前附件中分离。当您和另一个用户尝试同时访问同一会话时,此参数特别有用。
  • screen -DDR - 从正在运行的附件中分离正在运行的会话并执行强制重新附加。当-dr选项不成功时,这很有用。
  • screen -A - 强制Screen在附加时将其所有窗口的大小调整为当前窗口。
  • screen -X [command] - 启动一个Screen会话,但它不会加载一个shell,而是加载一个任意命令。如果您创建其他Screen窗口,他们也将运行此命令。

操纵Screen会话

连接或重新连接到Screen会话后,所有命令都通过使用Ctrl,字母a和另一个字母或数字来执行。(注意同时按下Ctrla键。)下面是Screen命令列表:

  • Ctrl+a c - 创建一个新的Screen窗口。默认Screen编号为零。
  • Ctrl+a 0-9 - 在窗口0到9之间切换。
  • Ctrl+a x - 锁定终端窗口。您必须输入密码才能解锁终端会话。
  • Ctrl+a n - 切换到下一个窗口。
  • Ctrl+a k - 关闭当前窗口。发出命令后,系统会要求您输入y或确认n
  • Ctrl+a A - 允许您输入窗口的标题。
  • Ctrl+a d - 从Screen上分离。
  • Ctrl+a ? - 将显示Screen可用的所有命令选项的列表。

请务必注意,上面列出的命令选项只是可用选项的一小部分。

Screen命令和自定义

Screen使用了许多其他命令。命令列表非常广泛,因此请务必注意,并非所有命令都会被覆盖。此外,可以通过编辑screenrc文件来定制屏幕。

使用SSH连接Screen

通过SSH连接到远程会话时,最好同时连接到Screen。语法如下:

ssh -t <user>@<server> screen -r

用户名是您连接的用户,服务器是服务器的IP地址或名称。

更改默认Screen行为

要更改Screen的默认设置,请编辑位于/ etc / screenrc中的screenrc文件。 可以使用任何文本编辑器编辑screenrc文件。 此文件用于设置选项,将Screen功能绑定到键,设置终端功能,以及在Screen会话开始时自动连接到一个或多个窗口。 强烈建议您在进行任何更改之前制作screenrc文件的备份副本。

Screen分发中包含两个配置文件:/etc/screenrc/etc/etcscreenrc。它们包含有关如何自定义Screen的几个有用示例。使用您喜欢的文本编辑器打开文件。编辑其中一个文件的命令是:

nano screenrc

(请注意,您可能只有这些文件之一。)以下是screenrc文件的示例:

更多信息

有关此主题的其他信息,您可能需要参考以下资源。虽然提供这些是希望它们有用,但请注意,我们无法保证外部托管材料的准确性或及时性。

想要了解更多关于GNU Screen和Linux的教程请前往腾讯云+社区学习。


参考文件:《Using GNU Screen to Manage Persistent Terminal Sessions》

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏阮一峰的网络日志

PHP最佳实践

虽然名字叫《PHP最佳实践》,但是它主要谈的不是编程规则,而是PHP应用程序的合理架构。

2151
来自专栏用户2442861的专栏

linux动态库和静态库

http://blog.163.com/xychenbaihu@yeah/blog/static/13222965520101023104745738/

2652
来自专栏圆方圆学院精选

【刘文彬】RPC的基础:调研EOS插件http_plugin

原文链接:醒者呆的博客园,https://www.cnblogs.com/Evsward/p/httpPlugin.html

1101
来自专栏青玉伏案

设计模式(六):控制台中的“命令模式”(Command Pattern)

今天的博客中就来系统的整理一下“命令模式”。说到命令模式,我就想起了控制台(Console)中的命令。无论是Windows操作系统(cmd.exe)还是Linu...

2029
来自专栏乐百川的学习频道

CoffeeScript 简介

简介 JavaScript也是一门经历了很多年的语言了,自从浏览器兴起,JavaScript就一直在被使用。但是,JavaScript有一些特性没有实现,为了让...

20410
来自专栏向治洪

MIDlet工作原理

题记 :  现在的J2ME用户已经是日益减少 , 开发也在转型! 无奈之下也不得不写下这系列文章来别了j2me ,也是对过去的一些总结吧!         ...

18210
来自专栏小程序·云开发专栏

云函数之间互相调用实现邮件发送

很多时候,我们会面临在小程序的后台实现多重功能,比如用户管理、日志分析、数据排序等,不同的功能之间还会相互调用。如果把这些功能都写到一个云函数里,会造成云函数逻...

7.2K1
来自专栏chenssy

【死磕Java并发】—–J.U.C之Condition

在没有Lock之前,我们使用synchronized来控制同步,配合Object的wait()、notify()系列方法可以实现等待/通知模式。在Java SE...

3394
来自专栏逢魔安全实验室

隐藏在Chrome插件商店中的恶魔——恶意插件User-Agent Swither分析

? ? 0x00 插件背景 — User-Agent Swither 是一款Chrome插件,用户切换访问web时候的User-Agent的,这个插件有51万...

3615
来自专栏python3

python3--基础综合练习题

允许用户最多尝试3次,3次都没猜对的话,就直接退出,如果猜对了,打印恭喜信息并退出

1773

扫码关注云+社区