前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用GNU Screen管理持久终端会话

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

原创
作者头像
苏子晨
发布2018-08-17 17:32:24
2.1K0
发布2018-08-17 17:32:24
举报

介绍

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:

代码语言:javascript
复制
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install screen

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

代码语言:javascript
复制
sudo yum update
sudo yum install screen

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

代码语言:javascript
复制
sudo pacman -Sy
sudo pacman -S screen

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

代码语言:javascript
复制
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命令的示例:

代码语言:javascript
复制
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会话,请使用以下语法:

代码语言:javascript
复制
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。语法如下:

代码语言:javascript
复制
ssh -t <user>@<server> screen -r

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

更改默认Screen行为

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

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

代码语言:javascript
复制
nano screenrc

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

更多信息

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

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


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

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 介绍
  • 安装GNU Screen
  • Screen基础知识
  • 管理Screen附件
  • 操纵Screen会话
  • Screen命令和自定义
    • 使用SSH连接Screen
      • 更改默认Screen行为
      • 更多信息
      相关产品与服务
      云开发 CloudBase
      云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档