专栏首页云计算教程系列使用GNU Screen管理持久终端会话
原创

使用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 条评论
登录 后参与评论

相关文章

  • 加固你的服务器,防止SSH攻击

    Secure Shell(安全外壳协议,简称SSH)是一种加密的网络传输协议,可在不安全的网络中为网络服务提供安全的传输环境。SSH通过在网络中创建安全隧道来实...

    苏子晨
  • 如何在Debian 9上安装MariaDB

    MariaDB是一个开源数据库管理系统,通常作为流行的LAMP(Linux,Apache,MySQL,PHP / Python / Perl)堆栈的一部分代替M...

    苏子晨
  • 给你的数据库加一道缓存:Redis入门教程

    Redis是一个使用ANSI C编写的开源、支持网络、基于内存、可选持久性的键值对存储数据库。 本教程将会教你如何在Ubuntu 18.04 上安装、配置Red...

    苏子晨
  • 莆田与百度为何无法走上谈判桌?

    节假日总是“发难”的绝佳时期,所谓攻其不备。莆田(中国)健康产业总会清明节宣布通过代表无记名投票形成决议,会员单位从4月5日零时起暂停与百度在竞价推广方面的合作...

    罗超频道
  • 1.15 克隆虚拟机

    克隆前,需先关闭虚拟机 选择“虚拟机”,在选择“管理”,在“克隆”,创建链接克隆,改名为hf-02 在vi /etc/sysconfig/network-scr...

    运维小白
  • 微服务系列-最终一致性与事件流

    微服务是一个个单个小业务功能的服务,由于各个微服务开发部署都是独立的,因此微服务天然是分布式的。 微服务的典型问题是如何共享状态? 关于共享状态的几个解决方案:...

    春哥大魔王
  • js获取url参数

    deepcc
  • Openstack侦探故事2

    在Episode1的Openstack侦探故事中,我被叫到犯罪现场:我们的基于OpenStack的私有云中心器件。什么人或什么东西造成了我们的虚拟负载均衡可以拍...

    ZHaos
  • 华为路由交换技术 | 华为命令行简介

    [ ]undo info-center enable 关闭信息中心 ,防止弹出日志

    网络技术联盟站
  • 史上最全面的正则表达式教程,读完就能彻底理解!支持python , js , php 等多种语言在线练习!代码生成!

    白玉无冰

扫码关注云+社区

领取腾讯云代金券