教程 | 如何使用 Linux Screen

为什么要筛选?

您是否遇到过这样的情况:您在远程计算机上执行一项长时间运行的任务,然后突然连接断开,SSH 会话终止,您的工作丢失。 嗯,我们所有人都曾经遇到过这种情况,不是吗? 幸运的是,有一个名为 的实用程序可以让我们恢复会话。

介绍

Screen 或 GNU Screen 是一个终端多路复用器。 换句话说,这意味着您可以启动一个屏幕会话,然后在该会话内打开任意数量的窗口(虚拟终端)。 即使您断开连接,Screen 中运行的进程在其窗口不可见时仍将继续运行。

安装 Linux GNU Screen

目前,大多数 Linux 发行版都预装了 screen 包。
您可以通过输入以下命令来检查它是否已安装在您的系统上:

如果您没有安装 screen, 您可以使用包管理器轻松安装它:
sudo apt update && sudo apt install screen

开始 Screen 会话

要启动屏幕会话,只需在控制台中输入
要启动命名会话,请使用 。 选择一个描述性的会话名称总是一个好主意。

使用 Linux 屏幕窗口

当您启动新的屏幕会话时,它会创建一个带有 shell 的单个窗口。 您可以在 Screen 会话内拥有多个窗口。 要创建一个具有 shell 类型 的新窗口,将会为其分配范围 中第一个可用的数字。

以下是一些用于管理 Linux Screen Windows 的最常用命令:

  • Ctrl+a c 创建一个新窗口(带有外壳)。
  • Ctrl+a " 列出所有窗口。
  • Ctrl+a 0 切换到窗口 0(按编号)。
  • Ctrl+a A 重命名当前窗口。
  • Ctrl+a S 将当前区域水平分割为两个区域。
  • Ctrl+a | 将当前区域垂直分割为两个区域。
  • Ctrl+a tab 将输入焦点切换到下一个区域。
  • Ctrl+a Ctrl+a 在当前窗口和上一个窗口之间切换
  • Ctrl+a Q 关闭除当前区域之外的所有区域。
  • Ctrl+a X 关闭当前区域。

从 Linux Screen 会话分离/重新连接

您可以随时通过输入以下命令退出屏幕会话: Ctrl+a d
当您脱离会话后,在屏幕会话中运行的程序将继续运行。
要恢复屏幕会话,使用 screen -r
要查找当前正在运行的屏幕会话的会话 ID 列表 ,请使用 screen -ls
要恢复 ID 为的屏幕会话,请使用 screen -r [session ID]

选项和快捷键

选项
  • -a: 它强制将所有功能放入每个窗口的 termcap 中。
  • -A -[r|R]: 它使所有窗口适应新的显示宽度 & 高度。
  • -c file: 它读取配置文件而不是“.screenrc”。
  • -d (-r): 它分离在其他地方运行的屏幕(并重新连接到这里)。
  • -dmS 名称: 它作为守护进程启动:处于分离模式的屏幕会话。
  • -D (-r): 它分离并注销远程(并在这里重新连接)。
  • -D -RR: 它会做任何需要做的事情来获得屏幕会话。
  • -e xy: 它改变命令字符。
  • -f: 它使流量控制打开,-fn = 关闭,-fa = 自动。
  • -h 行: 它设置回滚历史缓冲区的大小。
  • -i: 当流控制开启时,它会更快地中断输出。
  • -l: 它使登录模式开启(更新 /var/run/utmp),-ln = off。
  • -ls [match]: 它显示所有附加的屏幕。
  • -L: 它打开输出日志。
  • -m: 它忽略 $STY 变量,创建一个新的屏幕会话。
  • -O: 它选择最佳输出而不是精确的 vt100 仿真。
  • -p 窗口: 如果存在,则预先选择命名的窗口。
  • -q: 它安静启动。 如果不成功则退出并返回非零代码。
  • -Q: 该命令将把响应发送到查询过程的标准输出。
  • -r [session]: 它重新连接到一个分离的屏幕进程。
  • -R: 如果可能则重新连接,否则开始新的会话。
  • -S sockname: 它将此会话命名为 .sockname 而不是 …
  • -t 标题: 它设置标题。 (窗口的名称)。
  • -T 术语: 它使用术语 $TERM 来表示窗口,而不是“屏幕”。
  • -U: 它告诉屏幕使用 UTF-8 编码。
  • -v: 它打印“屏幕版本 4.06.02 (GNU) 23-Oct-17”。
  • -x: 它附加到未分离的屏幕上。 (多显示模式)。
  • -X: 它在指定的会话中作为屏幕命令执行。
快捷键
  • Ctrl-a + c: 它创建一个新窗口。
  • Ctrl-a + w: 它显示当前打开的所有窗口的列表。
  • Ctrl-a + A: 它重命名当前窗口。 当您列出使用 Ctrl-a + w 打开的窗口列表时,将会出现该名称。
  • Ctrl-a + n: 它进入下一个窗口。
  • Ctrl-a + p: 它转到上一个窗口。
  • Ctrl-a + Ctrl-a: 返回到最后使用的窗口。
  • Ctrl-a + k: 它关闭当前窗口(kill)。
  • Ctrl-a + S: 它水平分割当前窗口。 要在窗口之间切换,请按 Ctrl-a + Tab。
  • Ctrl-a + |: 它垂直分割当前窗口。
  • Ctrl-a + X: 关闭活动分割窗口
  • Ctrl-a + Q: 关闭所有分割窗口
  • Ctrl-a + d: 它分离屏幕会话但不停止它。
  • Ctrl-a + r: 它重新连接一个分离的屏幕会话。
  • Ctrl-a + [: 它启动复制模式。
  • Ctrl-a + ]: 粘贴复制的文本。
滚动至顶部