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


8

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

现在,我们在Unix / Linux世界中有了终端仿真器(Ctrl+ Alt+ Fn)。

在Ubuntu OS中,我看到了七个终端仿真器,其中GUI占据了第七个终端仿真器(Ctrl+ Alt+ F7)。

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

$ tty
/dev/tty0

为什么Unix / Linux提供多个终端仿真器?


8
总是有需求。当只有一个终端可用时,使用名为“ screen”的程序。
VPfB

7
@vpfb屏幕仍然可用,并且是我工作流程中不可或缺的一部分!
tpg2114 '17

1
我认为您要问的不是终端仿真器(像xterm,rxvt和&c这样的程序,它们在X下作为图形应用程序运行),而是文本模式的终端,它们不运行图形。我真正发现的唯一用途(并且这已经有好几年了)是在X无法正常工作时调试东西。OTOH我大部分的实际工作都在xterm窗口中进行,可能有3个到十几个或更多的开放空间。
jamesqf

@jamesqf为什么不将ctrl + alt + f1称为终端仿真器?因为它不是我们在1970年代拥有的硬件CUI终端

2
@overexchange:我不这样称呼他们,因为那不是熟悉他们的人所使用的术语。如果您搜索“ Linux终端仿真器”,则会得到很多结果,其中大多数与Ctl-Alt-F [1-7]获得的文本模式控制台无关。
jamesqf

Answers:


25

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

出于相同的原因,您的GUI终端仿真器可能支持选项卡(例如GNOME Terminal),如果不支持(例如rxvt),则出于相同的原因,启动第二个GUI终端应用程序实例并不仅会将第一个拉到前台并退出,强制您使用第一个实例。

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

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

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

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

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

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

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

我目前的一项爱好项目是偶尔使用一个真正的旧玻璃终端,这意味着我不再有多个终端窗口,所以我终于对GNUscreen有了一些了解,该程序以前从未使用过,因为多个控制台终端或多个GUI终端。怎么screen办?除此之外,你可以配置它给你多个虚拟终端在一个屏幕上,就像Linux中做Ctrl- - 。AltFx


10
关于屏幕,更好的一点是-您可以断开,注销,重新登录并重新连接到会话,过程或您在屏幕上所做的任何操作,而不是在哑控制台终端上具有多个终端。继续。
ivanivan

除了@ivanivan所说的以外,其他人可以看到您的屏幕会话,而多个人可以同时查看它。就像控制台桌面共享一样。
stanri'4

旁注:使用纯屏幕还有一些替代方法superuser.com/q/423310
moooeeeep

18

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

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

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

最初介绍它们时,没有图形环境可用于运行这些Unix实现的计算机。虽然将物理终端通过RS232线路连接到中央Unix服务器是标准做法,但是如果目标仅是单个用户同时运行多个交互式程序,则将多个终端连接到运行Xenix的标准PC上是过头的。虚拟终端为该问题提供了一种优雅而便捷的解决方案。

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

当图形环境(尤其是X11)散布开来时,能够在同一屏幕上同时看到多个终端仿真器是一项重大改进。但是,通常保留虚拟控制台功能的原因仅在于,如果图形环境由于某种原因被冻结或功能异常,仍然可以方便地切换到控制台。

请注意,实用程序喜欢screentmux出现的时间比虚拟终端要晚得多,以推广相同的功能。他们的优势是它们可以采用非仅本地物理控制台上,而且对任何会议,无论是本地或远程(例如telnetssh)。当在物理控制台上使用虚拟控制台时,虚拟控制台仍然有用,因为它们在某些情况下无法工作screen/ tmux无法帮助,例如X11被冻结,或者窗口捕获了焦点但没有释放它,它们就可以发挥作用。

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


4

我想拥有额外的终端仿真器的一个很好的理由是,如果您在图形界面中执行了某些错误操作而变得无法使用,则可以快速切换到终端仿真器并更正图形界面中遇到的所有问题。实际上,当您更改窗口管理器或图形界面的其他功能时,通常会发生这种情况。我想拥有更多终端也很有用,但是在主图形界面上有6个顶盖似乎有点多余。

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


“如果您做错了事”-解释了为什么有一个虚拟控制台,而不是为什么有多个控制台(即回答一个不同的问题)。“不可能从一个终端仿真器以不同用户身份运行多个命令吗?” -是的,但是它们的输出将混杂在一起,运行诅咒程序将很困难。
RadovanGarabík'17

4

许多其他问题似乎可以回答为什么引入该功能。

不过,实际的问题是:

为什么Unix / Linux提供多个终端仿真器?

“做”,而不是“做”。

因此,关注当前时间,这是一些当前原因:

  • 他们可以很方便。有时,我可以切换到另一个终端,而不是创建一个覆盖桌面上其他窗口的新窗口。然后,我可以改回去,因此桌面是前台。有时(通常是在打开多个窗口的情况下),这比在终端中放置一个终端窗口更方便,然后稍后再尝试使同一窗口成为前台(而不是意外地选择另一个终端)图形桌面上的窗口)。

    例如,我可以记得Alt-Ctrl-F2是查看一个文本文件(例如文档)的文本编辑器,而Alt-Ctrl-F3用于快速查看另一文件(例如配置文件), Alt-Ctrl-F4用于命令提示符,而图形桌面可以在Web浏览,电子邮件,音乐播放器等之间拆分。
  • 如果图形显示出现任何类型的问题,终端窗口对于使用计算机很有用。对于可能当前需要使用没有图形视频卡的(也许是定制的)计算机的人们,此功能可能至关重要。除了当前可能存在的需求之外,还有未来的需求(可能是后继/后继操作系统)的可能性。
    • 这些文本终端倾向于使用较少的资源。例如,他们倾向于使用较少的图形卡内存。因此,如果图形卡的物理故障破坏了第三和第四兆字节视频内存的功能,那可能甚至不会影响仅使用传统文本终端的用户。使用更少资源的简单过程在执行恢复时可能会有所帮助。
  • 该代码已存在。因此,支持它们很容易。
  • 未使用的终端(在登录之前)的资源量很小。甚至可以通过调整/ etc / ttys来收回少量内存
  • 支持多个终端的代码与通过串行连接支持I / O的代码非常相似。操作系统的开发人员往往会重视很多。随着虚拟机的进步,使用串行连接的价值不再像以前那样关键。尽管如此,一些内核开发人员(已经熟悉该过程)可能仍喜欢使用此类硬件。使用旧硬件的组织也可能会因为不需要更改硬件而受益。

总而言之,没有太多理由不支持这一点。有些人至少在某些时候会体会到一些好处,而且成本也不高。

实际上,除去对此的支持可能比仅保留支持更多的工作。尽管取消支持可能很简单,但是如果有什么失败的话,那么识别和解决问题可能会有些挑战。因此,减少所需的工作量(开发新版本的操作系统)是将事情保持原样的另一个原因。这意味着该功能易于保持可用。


具有历史观点通常是有用的。您告诉您要专注于现在,但最后得出结论:“ Unix / Linux当前提供多个终端仿真器的原因之一是因为它确实首先提供了它们……”
jlliagre

是。它做了。如果没有,今天可能不会。但是自从Unix这样做以来,这仍然是它这样做的一个令人信服的理由。我绝不是要最小化熟悉过去的用处。我的自然倾向是将重点放在为什么要添加它上(而我的第一或第二份草案对此有更详细的说明),但是我试图着眼于目前的主要原因是要问的问题。另外,其他答案也提到了过去,我尝试通过添加已陈述的内容来做出一个有用的答案,而不是仅仅复制页面上其他地方已经说过的内容。
TOOGAM

3

您首先要问的是名为Linux的内核的功能。通常不是Unix,也不是Gnu。

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


是的,内核VT是由用户域代码设置的,是的,还有其他一些具有它们的Unix。但是,这不是一般的Unix。
ctrl-alt-delor
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.