你真的知道什么是终端吗?
终端(Terminal)是Unix/Linux世界里的一个基本的、重要的概念。但很多人并不了解终端的真正含义。
终端——人与机器交互的接口
人和机器是两个相互独立的实体。当人使用机器时,必须借助某种接口(interface)才能与机器交流信息。台式机的接口包括显示器、键盘、鼠标、扬声器、麦克风等。CPU、内存、硬盘、光驱、显卡、网卡等其他硬件属于主机(host)。Unix和Linux把这种使得人和机器可以交互的接口称为终端。
终端具有两个基本功能:向主机输入信息和向外部输出信息。所以终端可以分为输入设备和输出设备。台式机的输入设备通常包括键盘、鼠标、麦克风,输出设备包括显示器、扬声器等。
我们可以将上面的两段内容归纳为两个公式:
计算机 = 主机 + 终端 终端 = 输入设备 + 输出设备
台式机的主机和终端在物理上是分开的,笔记本电脑却是一个整体,但我们仍然可以将笔记本电脑的设备分为主机和终端。
人类也可以有终端。人类的终端,也就是人类与外部世界进行信息交流的接口。人类终端的输入设备包括感知器官,即眼睛、耳朵、嘴巴、鼻子等。输出设备包括嘴巴(发出声音)、四肢(改变外部世界)等。
综上所述,终端是人与机器交互的接口。人通过自身终端的输出设备(嘴巴或手)将信息传递给计算机终端的输入设备(键盘、鼠标等),后者将信息传递给计算机的主机。主机处理完信息后,将结果传递给计算机终端的输出设备,后者将结果传递给人类终端的输入设备,最后到达人类的大脑。
早期的终端
个人计算机是上世纪70年代末开始出现的。在那之前,人们只能在公司或大学里使用大型机(mainframe)和小型机(minicomputer)。这些计算机非常昂贵,Unix创始人肯•汤普逊和丹尼斯•里奇使用的PDP-7小型机当年的价格为72000美元,GE-45大型机价格高达1000万美元。
肯•汤普逊和丹尼斯•里奇想让Unix成为一个多用户系统。多用户系统意味着要给每个用户配置一个终端,每个用户都要有一个显示器、一个键盘。但当时所有的计算机设备(包括显示器)价格都非常昂贵,而且键盘和主机是集成在一起的,根本没有独立的键盘。
最后他们找到了一样东西,那就是ASR33电传打字机。ASR是英文Automatic Send-Receive的首字母缩写。虽然电传打字机的用途是在电报线路上收发电报,但是它也可以作为人与计算机的接口,而且价格低廉。ASR33打字机的键盘用来输入信息,打印纸用来输出信息。
所以他们把ASR33电传打字机作为终端,很多个ASR33连接到同一个主机,每个用户都可以在终端输入用户名和密码登录主机。这样他们创造了计算机历史上的第一个真正的多用户系统Unix,而ASR33成为第一个Unix终端。
什么是终端服务器(Terminal Server)?
当公司或大学的资金只能买一台大型机或小型机时,所有的终端都直接连到这台主机。随着时间的推移,主机价格逐渐下降,这时一个机构内部有多个主机。如何才能让每个终端都能连接到任何一个主机呢?在各个终端和主机之间牵一根线代价太大,而且线路容易搞混。这时候终端服务器就派上用场了。各个终端与终端服务器相连,各个主机也与终端服务器相连。当终端启动时,终端服务器询问用户要登录哪个主机,用户指定主机后,再输入用户名和密码登录相应的主机。这种拓扑结构很像今天的家庭网络,终端服务器相当于路由器。
控制台(Console)又是个什么东西?
通常终端都是通过线路连接到主机。有一个终端却与众不同,它与主机是一体的,不需要连线。这个特殊的终端就是console,中文名为控制台。Console是用来管理主机的,只能给系统管理员使用,而且一个主机只有一个console。Console与一般终端在外表上没什么区别,但在功能上却大不相同,有些事情只能在console完成,而不能在终端完成。例如,当系统启动出现错误时,错误信息会显示在Console的显示器屏幕上,而不会显示在一般的终端上。这是因为系统还没有成功启动,用户是不能在一般的终端登录系统的。另外,当主机需要维护或修复问题时,Unix以单用户模式启动(single-user mode)。在单用户模式下,只有console才能连接到主机,其他终端没有权限访问主机。
个人计算机上的显示器和键盘既可以认为是Console,也可以是一般的终端。当你在管理系统时,它们是Console;当你在做一般的工作时(浏览网页、编辑office文档等),它们是终端。
现在,人们把console和Terminal看成是同义词,在使用时往往不区分它们原来的差别。这是因为在90年代中期以前,人们都是在公司或大学里通过终端访问Unix,有专门的系统管理员在console管理系统。而现在,人们可以拥有自己的Unix,在自己的电脑上使用Unix,这时候,console和终端是一体的,自己既是一般用户,也是系统管理员。
终端模拟程序
现在我们知道终端属于硬件。从前用户坐在真实的终端前面输入命令,现在输入命令时不能使用真正的终端。因为现在真实的终端是图形界面的终端。现在,用户要输入命令必须使用终端模拟程序(Terminal Emulation Program)。终端模拟程序就是我们平常在Linux桌面环境中打开的终端窗口(Terminal Window),它是个虚拟终端,但主机会认为它就是真正的终端。终端模拟程序也可以叫做终端模拟器(Terminal Emulator)。
如果你使用Unity或Gnome桌面,那么在终端里输入命令man gnome-terminal,在gnome-terminal的手册里你会看到对gnome-terminal的介绍。gnome-terminal是 一个终端模拟程序,它模拟的是xterm。xterm也是一个终端模拟程序,xterm模拟的是DEC公司制造的VT102终端。你会发现,终端模拟程序 不仅可以模拟真实的终端,也可以模拟其他的终端模拟程序。
终端模拟程序可以模拟任何终端,包括真实终端和虚拟终端。但实际上只有四种终端被作为模拟的对象。DEC公司1978年制造的VT100终端和xterm终端模拟程序是最常见的两个模拟对象。另外两个不太常见的模拟对象是DEC公司生产的VT220终端和用于IBM大型机的3270终端。
字符终端和图形终端
字符终端(Character Terminal)也叫文本终端(Text Terminal),是只能接收和输出文本信息的终端。图形终端(Graphics Terminal)不但可以接收和输出文本信息,也可以输出图形图像。DEC公司1978制造的型号为VT100的终端,由于设计非常良好,成为史上最流 行的字符终端,并且为其他字符终端设立了永久的标准。事实上,现在Linux系统上很多的终端模拟程序把DEC公司VT100系列终端作为模拟对象。图形 终端有另外一个标准,那就是X Window,它是大多数Unix-like系统GUI界面的基础。xterm是Unix世界里最著名的图形终端模拟程序,现在你依然可以在Linux系 统上找到xterm这个程序。xterm模拟的图形终端是Tektronix 4014。
终端窗口和虚拟控制台(Terminal Window and Virtual Console)
实际上,终端模拟程序分为两种。在上面提到的终端窗口是其中一种,另外一种是虚拟控制台(Virtual Console)。在上世纪七八十年代,在公司和大学里,一般人们只可以使用一个终端。但有一些重量级人物可以使用很多个终端,因为他们需要在同一时间内使用主机做不同的事,所以在他们的办公桌上会有四五个甚至六七个终端。
现在,我们不需要在桌上摆上这么多个终端。Unix允许用户在自己电脑上使用多个终端,其中有一个是图形终端,其他六个是字符终端。这七个终端使用同一个显示器和键盘。如果我们需要从一个终端切换到另外一个终端,只需按一下快捷键。一般情况下当我们启动Linux系统时,图形界面自动启动。但有一件事你可能不知道,实际上Linux会同时启动七个不同的终端模拟程序。这七个特殊的终端模拟程序叫做虚拟控制台。
第一个到第六个虚拟控制台是全屏的字符终端,第七个虚拟控制台是图形终端,用来运行GUI程序。从图形终端切换到字符终端,我们只需按快捷键CTRL+ALT+F1,或CTRL+ALT+F2…….CTRL+ALT+F6。要切换回图形终端,只需按快捷键CTRL+ALT+F7。当图形终端崩溃时,我们可以按快捷键切换到这六个字符终端的其中一个,然后输入命令修复问题或重启系统。
结语
Unix系统在诞生之初就被设计成一个单主机-多终端模式的多用户系统。现在我们仍然可以在自己家中组建一个”单主机-多终端”的计算机系统,也就是说我们可以把一台硬件强大的主机放在家中,主机安装Linux系统,然后在各个房间部署一个显示器、一个键盘鼠标,这样各个房间都有了自己的终端,各个终端连接到主机,供家人使用。实际上,我们可以在任何终端上通过互联网登录到世界任何地方的Unix主机,只要你有权限访问那台Unix主机。比如我们可以购买国外的VPS,然后在自己的Linux系统上打开一个终端模拟程序,用SSH登录VPS。
注意windows系统虽然号称是多任务多用户系统,但windows对多用户的定义是可以创建多个账号。在windows系统上,同一时间只能登录一个用户账号。Unix-like系统允许多个账号同时登录,是真正的多用户系统。
想买台ASR33……但是担心浪费纸……于是黑白液晶屏的变种吗?
最后一句对windows的评论是错误的。
哪里错了
windows远程桌面就可以允许多个用户同时登录。