自学内容网 自学内容网

Screen(一)_简介与安装

一、什么是screen命令

screen 是 Linux/Unix 系统中一个非常强大的终端多路复用器(Terminal Multiplexer)。它允许用户在一个单一的物理终端窗口中运行和管理多个会话(类似于虚拟终端),并且这些会话可以在后台保持运行,即使用户断开连接也不会终止正在运行的进程。

二、主要功能

1.后台运行任务

screen 会话中的进程可以独立于用户的当前终端会话运行,即使用户关闭终端或断开 SSH 连接,任务也会继续运行。

2.会话恢复

用户可以在断开连接后重新连接到先前的 screen 会话,恢复其状态。

3.多窗口支持

在一个 screen 会话中,用户可以创建多个虚拟终端(窗口),每个窗口可以独立运行不同的命令或任务。

4.共享会话

多个用户可以同时连接到同一个 screen 会话,用于协作调试或共享任务。

5.滚动查看历史输出

screen 提供了内置的滚动缓冲区功能,可以方便地查看之前的输出内容。

三、实现原理

screen 命令的原理基于终端多路复用技术和伪终端(pseudo-terminal,简称 PTY)的使用。下面从几个核心概念来解释它的实现原理:

1. 伪终端 (PTY)

  • 什么是伪终端?

    在 Unix/Linux 系统中,伪终端是一种虚拟终端,它由两部分组成:主设备(master)从设备(slave)。应用程序与主设备通信,主设备将数据转发给从设备,从设备则模拟一个真实的终端。

  • screen 中的作用:

    screen 会为每个会话创建一个伪终端。它拦截用户输入(通过主设备),将其发送到对应的伪终端,并捕获从设备返回的输出,再将其显示到用户的终端。

    这样,screen 可以管理多个伪终端,实现多个虚拟会话。

2. 会话管理

  • 当用户运行 screen 时,它会创建一个主进程作为会话管理器,并启动子进程来运行用户的 Shell(例如 bash、zsh 等)。
  • 每个 screen 窗口实际上对应一个独立的 Shell 子进程。screen 的主进程负责:
    • 跟踪每个窗口的状态。
    • 管理窗口之间的切换。
    • 保存窗口的历史输出。
    • 在会话分离(detach)后保持子进程的运行。

当用户分离会话时,screen 会保持这些子进程运行,直到用户重新连接。

3. 输入输出重定向

screen 通过重定向标准输入(stdin)、标准输出(stdout)和标准错误(stderr)来实现与伪终端的通信:

  • 用户的输入被捕获后,screen 将其发送到对应的伪终端。
  • 程序的输出被伪终端捕获后,screen 将其返回并显示到用户的真实终端。

这种输入输出重定向使得用户可以自由切换、分离、重新连接会话,而不会中断正在运行的程序。

4. 后台运行

  • 当用户分离会话时,screen 的主进程不会退出,而是继续运行:
    • 它维持伪终端和子进程的状态。
    • 保存窗口的内容。
    • 等待用户重新连接。
  • 即使用户关闭终端或者网络连接断开,screen 进程仍会驻留在系统中,确保任务不中断。

通过这种方式,screen 实现了后台运行的效果。

5. 多路复用

  • 多窗口机制:

    screen 的主进程可以管理多个伪终端(窗口),每个伪终端运行一个独立的 Shell 或程序。

  • 窗口切换:

    通过快捷键,screen 的主进程会将用户的终端绑定到不同的伪终端,实现窗口间的快速切换。

6. 滚动缓冲区

  • screen 为每个窗口分配了一个缓冲区,用于存储历史输出数据。
  • 当用户进入滚动模式时,screen 会暂停实时输出,并允许用户浏览缓冲区中的历史内容。

7. 会话恢复

  • 每个 screen 会话都有一个唯一的标识符(ID)或名称。
  • 分离会话后,screen 的主进程会保存伪终端的状态。
  • 当用户重新连接会话时,screen 会将用户的终端重新绑定到保存的伪终端,恢复之前的运行状态。

四、安装

大多数 Linux 系统默认包含 screen,如果没有安装,可以用以下命令安装:

  • Debian/Ubuntu:

    sudo apt install screen
    
  • CentOS/RHEL:

    sudo yum install screen
    
  • Arch Linux:

    sudo pacman -S scre
    


原文地址:https://blog.csdn.net/weixin_48870215/article/details/144641679

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!