为什么UNIX/Linux提供多个终端?

为什么UNIX/Linux提供多个终端?

在 20 世纪 70 年代,我们拥有带有 CUI(字符用户界面)接口的硬件终端用于输入/输出。

现在,我们在 Unix/Linux 世界里有了终端模拟器 ( Ctrl++ Alt) 。Fn

在 Ubuntu 操作系统中,我看到七个终端模拟器,其中 GUI 占据了第七个终端模拟器 ( Ctrl++ )。AltF7

例如,这是我的第一个终端 ( Ctrl++ Alt)F1模拟器

$ tty
/dev/tty0

为什么Unix/Linux提供多个终端模拟器?

答案1

为什么 UNIX/Linux [在控制台上]提供多个终端模拟器?

出于同样的原因,您的 GUI 终端模拟器可能支持选项卡(例如 GNOME 终端),如果不支持(例如rxvt),那么出于同样的原因,启动第二个 GUI 终端应用程序实例不会只是将第一个实例拉到前台并退出,从而迫使您使用第一个实例。

我在工作中通常至少使用 3 个终端窗口,而且通常更多:

  1. 我正在开发的系统服务器端的文本编辑器

  2. 同一系统客户端的文本编辑器

  3. 用于运行服务器的命令窗口

我很少需要第四个终端来运行客户端程序,因为它通常在其他地方运行(Web 应用程序、本机 GUI 应用程序、移动应用程序等),但如果我为我的服务器应用程序开发 CLI 客户端,我会有一个也为其打开单独的终端。

过去,在sudo流行之前,我一直保持root终端打开。

如今,我很少在没有 GUI 的情况下在控制台上交互地使用 Unix/Linux 盒子,但我经常以无头方式运行它们并通过 SSH 访问它们。我选择的 SSH 终端客户端支持选项卡,配置如上。

我目前的爱好项目之一让我用真正的旧的玻璃终端偶尔,这意味着我不再有多个终端窗口,所以我终于了解了一些GNUscreen,这是一个我以前从未用过的程序,因为我有多个控制台终端或多个 GUI 终端。做什么呢screen?除其他事项外,您可以配置它为您提供多个虚拟终端在单个屏幕上,就像 Linux 那样Ctrl- Alt- 。Fx

答案2

这是几乎所有(如果不是全部)Unix 和在 x86 硬件上运行的类 Unix 系统都提供的功能。有趣的是,虚拟控制台首先由 Microsoft Xenix 在 80 年代初在 Unix 中引入,并且也可在并发 CP/M 中使用。

此功能后来被集成到 AT&T SVR4 Unix、Solaris 中,并被 BSD 和 Linux 借用。

为什么 UNIX/Linux 提供多个终端模拟器?

当它们第一次被引入时,运行这些 Unix 实现的机器没有可用的图形环境。虽然通过 RS232 线路将物理终端连接到中央 Unix 服务器是标准做法,但如果目标只是让单个用户同时运行多个交互程序,那么将多个终端连接到运行 Xenix 的标准 PC 就显得有些过分了。虚拟终端为这个问题提供了一个优雅且方便的解决方案。

后来其他 Unix 实现也提供了相同的功能来满足相同的需求。

当图形环境(尤其是 X11)扩展时,能够在同一屏幕上同时看到多个终端模拟器是一个重大改进。然而,虚拟控制台功能通常被保留,只是因为如果图形环境由于某种原因被冻结或功能失调,仍然可以方便地切换到控制台。

请注意,诸如screen和 之类的实用程序tmux比虚拟终端晚得多,以概括相同的功能。它们的优点是它们不仅可以在本地物理控制台上使用,还可以在本地或远程的任何会话上使用(例如telnetssh)。当在物理控制台上使用时,虚拟控制台仍然很有用,因为它们在某些无能为力的情况下也能发挥作用screentmux例如 X11 被冻结,或者窗口已捕获焦点但不释放它。

zlogin -C zone基于容器的虚拟化(例如 Solaris 区域或 Linux LXC)也提供了分别通过和连接到容器控制台的方法lxc-console -t 0 -n container

答案3

我认为拥有额外终端仿真器的一个很好的理由是,如果您在图形界面中做错了什么并且它变得无法使用,您可以快速切换到终端仿真器并纠正图形界面中遇到的所有问题。当您更改窗口管理器或图形界面的其他功能时,这种情况实际上经常发生。我想拥有更多的终端也会很有用,但是拥有 6 个主图形界面似乎有点过多。

如果我错了,请纠正我,但是是否可以从一个终端模拟器以不同的用户身份运行多个命令?

答案4

首先,您问的是 Linux 内核的一个特性。一般来说,它不是 Unix 内核,也不是 Gnu 内核。

至于为什么,你得问作者。但我的猜测是,它允许非联网设备(这里我将 RS232 作为一种网络类型)的管理员登录并执行一些管理工作,而无需注销其他用户。

相关内容