使用 tmux/screen 进行多路复用和在终端模拟器中打开选项卡有什么区别?

abd*_*mak 8 terminal display gnu multiplexing tmux

我试图通过 htop 测量内存和 cpu 使用情况来比较这两种运行多个 shell/进程的方法。

有人可以解释一下每种方法的功能有何差异,或者是否存在差异?

编辑:

据我现在的理解,tmux/screen和其他多路复用器是虚拟会话,即原始会话中的多个虚拟会话。这与在终端中打开新选项卡实际创建新会话形成对比。

我仍然不确定一种方法是否比另一种方法具有性能优势;也没有涉及的潜在机制。

同时,请随时贡献有关该主题的更多详细知识!

下面的这些链接帮助我理解了基本区别:

多路复用器和终端有什么关系?

使用终端复用器有什么好处

Aus*_*arn 10

最大的区别是,您可以从其他终端(终端仿真器、VT、SSH 会话,甚至真正的串行终端)重新连接到屏幕或 tmux 会话,但不能使用终端仿真器中的选项卡执行此操作。这听起来可能很简单,但它带来了使用 screen 或 tmux 的最大优势之一,尤其是在处理远程系统时:它可以在当前登录会话持续时间之外持续存在,这对于原因的数量。

但还有一些其他差异:

  • 使用 screen 或 tmux 意味着每个屏幕或 tmux 会话(但不是每个窗口/选项卡)总是有一个额外的进程。根据您使用的终端仿真器,您可能没有额外的进程,或者可能有多个额外的进程。
  • 使用 screen 或 tmux 可以为您提供一些大多数终端模拟器所没有的额外功能,例如分割窗口以及在选项卡中的应用程序上发送 BREAK 的功能。
  • 用于切换窗口/选项卡的热键有所不同(尽管两者通常都可以很容易地重新配置)。
  • 您可以从任何终端会话使用 screen 和 tmux,但只能在使用终端模拟器时使用选项卡。
  • Screen(可能还有 tmux)提供终端锁定功能。本质上,它相当于您在大多数桌面上看到的屏幕锁定。

在这两种情况下,每个窗口/选项卡最终都有一个关联的伪终端(通常缩写为 PTY)。这里真正的区别在于实际控制输入的伪终端和显示输出的伪终端。伪终端工作的确切机制有点复杂,但网上有很多地方有详细记录。基本思想是,它为进程提供了一种假装是实际硬件终端的方法,以便它可以运行另一个期望与终端通信的进程。

就系统资源而言,这两种选择实际上都没有那么高效,而在用户体验方面哪个更高效很大程度上取决于用户自己(例如,屏幕对我来说更有效,因为我已经习惯了所有默认键绑定)。