终端和控制台的一些解释

上传人:dus****log 文档编号:97267749 上传时间:2022-05-27 格式:DOC 页数:8 大小:30.50KB
返回 下载 相关 举报
终端和控制台的一些解释_第1页
第1页 / 共8页
终端和控制台的一些解释_第2页
第2页 / 共8页
终端和控制台的一些解释_第3页
第3页 / 共8页
点击查看更多>>
资源描述
关于终端和控制台的一些解释今天看到有人问终端和控制台的区别,而且这个问题比较有普遍性,因此想抽出一点时间来解释一下这两个术语的区别。终端,英文叫做terminal ,通常简称为term ,比如我们在X下的xterm. 控制台,英文叫做console。 要明白这两者的关系,还得从以前的多人使用的计算机开始。 大家都知道,最初的计算机由于价格昂贵,因此,一台计算机一般是由多个人同时使用的。在这种情况下一台计算机需要连接上许多套键盘和显示器来供多个人使用。在以前专门有这种可以连上一台电脑的设备,只有显示器和键盘,还有简单的处理电路,本身不具有处理计算机信息的能力,他是负责连接到一台正常的计算机上(通常是通过串口) ,然后登陆计算机,并对该计算机进行操作。当然,那时候的计算机操作系统都是多任务多用户的操作系统。这样一台只有显示器和键盘能够通过串口连接到计算机的设备就叫做终端。 而控制台又是什么回事呢? 学机电的人应该知道,一台机床,或者数控设备的控制箱,通常会被称为控制台,顾名思义,控制台就是一个直接控制设备的台面(一个面板,上面有很多控制按钮)。 在计算机里,把那套直接连接在电脑上的键盘和显示器就叫做控制台。请注意它和终端的区别,终端是通过串口连接上的,不是计算机本身就有的设备,而控制台是计算机本身就有的设备,一个计算机只有一个控制台。计算机启动的时候,所有的信息都会显示到控制台上,而不会显示到终端上。也就是说,控制台是计算机的基本设备,而终端是附加设备。 当然,由于控制台也有终端一样的功能,控制台有时候也被模糊的统称为终端。 计算机操作系统中,与终端不相关的信息,比如内核消息,后台服务消息,都可以显示到控制台上,但不会显示到终端上。 以上是控制台和终端的历史遗留区别。现在由于计算机硬件越来越便宜,通常都是一个人独占一台计算机超做,不再连接以前那种真正意义上的“终端设备了”,因此,终端和控制台的概念也慢慢演化了。终端和控制台由硬件的概念,演化成了软件的概念。 现在说的终端,比如linux中的虚拟终端,都是软件的概念,他用计算机的软件来模拟以前硬件的方式。比如在linux中,你用alt+f1 f6 可以切换六个虚拟终端,就好比是以前多人公用的计算机中的六个终端设备,这就是为什么这个叫“虚拟终端”的原因。当然,现在的linux也可以通过串口线,连接一个真正的终端,现在这种终端设备已经非常罕见了,但是还存在,只是一般人很难见到。也有人利用以前的老电脑(386,486)装上一个串口通信软件,连上一台计算机,来模拟一个终端来用。这样可以达到一台电脑多人使用的目的。 简单的说,能直接显示系统消息的那个终端称为控制台,其他的则称为终端。但是在linux系统中,这个概念也已经模糊化了。 比如下面这条命令: echo hello,world /dev/console 这条命令的目的是将hello,world显示到控制台上/dev/console是控制台设备的设备名。在linux中,在字符模式下,你无论在哪个虚拟终端下执行这条命令,字符hello,world都会显示在当前的虚拟终端下。也就是说,linux把当前的终端当作控制台来看待。可见,linux中已经完全淡化了控制台和终端的区别。但是在其他的UNIX类系统中,却很明显的有虚拟终端和控制台的区别。比如freeBSD系统。 在freebsd中,只有第一个“终端”才是真正的控制台。(就是说按alt+f1得到的那个虚拟终端) ,你无论在哪个虚拟终端上执行上面的那条命令(哪怕是通过网络连接的伪终端上执行这条命令)。hello,world字符总会显示到第一个“终端”也就是真正的控制台上。另外,其他的一些系统内部信息,比如哪个用户在哪个终端登陆,系统有何严重错误警告等信息,全都显示在这个真正的控制台上。在这里,就明显的区分了终端和控制台的概念。其他UNIX中也是这样的。比如Tru64 unix 在X下有一个控制台模拟软件,你无论在哪里输入echo hello,world /dev/console命令,hello,world总会显示在这个控制台模拟器中。 我们在X界面下用的那些输入命令的软件,比如xterm ,rxvt, gnome-terminal等等,都应该被称为终端模拟软件。请注意它和控制台模拟软件的区别。linux中好象没有控制台模拟软件。在X中的终端模拟软件中输入的echo hello,world/dev/console 命令的输出信息,都会输出到启动该X服务器的虚拟终端上。比如,你用字符方式登陆系统。进入第一个虚拟终端,然后startx启动X服务器。再打开xterm 来输入 echo hello,world/dev/console 命令,那么字符串hello,world就显示在第一个虚拟终端上。你按ctrl+alt+f1,回到那个启动X服务器的终端,就可以看到hello,world字符串。 现在该明白终端和控制台的区别了吧。再简单的说,控制台是直接和计算机相连接的原生设备,终端是通过电缆、网络等等和主机连接的设备。 在以前的硬件终端设备中,由于生产厂家不同,所遵循的标准不同,因此有不同的型号标准。比如vt100等。这里的vt100就是一个标准,那么现在我们所说的终端,往往不是真正的硬件终端了,而是终端模拟软件了,因此不同的终端模拟软件可能符合不同的标准,还有一些终端模拟软件符合很多种不同终端的标准。比如gnome的终端模拟软件gnome-terminal,他提供好几中标准可供用户选择。用户只要设置一下就可以了。 现在,由于原先的这些设备在我们的视线中渐渐淡出,控制台和终端的概念也慢慢谈化。普通用户可以简单的把终端和控制台理解为:可以输入命令行并显示程序运行过程中的信息以及程序运行结果的窗口。 不必要严格区分这两者的差别。了解Linux系统强大的控制台、终端和shell如同其他UNIX类系统,Linux本身也是基于命令行的。试试“Ctrl” “Alt” “F1”。这就是控制台,算是Linux的本来面目。至于使用方法,除了多出登录注销外,和前面章节所提到的“终端”差不多。在X-Window出问题或不运行X-Window的时候,操作主要在这里完成。 Linux在控制台下提供了不止一个终端,支持多用户同时登录,包括在本机同时登录。控制台“Alt” “Fx”能够切换到第x个终端。如果需要从X-Window里跳到第x个终端,需要“Ctrl” “Alt” “Fx”。一般地,Linux发行版提供7个虚拟屏幕,16号是控制台终端,第7个上面跑X-Window。红旗Linux桌面4.0只提供了2个控制台终端,第3个跑X-Window,如果需要更多控制台终端,可以修改“/etc/inittab”,找“# Run gettys in standard runlevels”一行,下面以数字和“#”开头的6行都是控制台终端说明。以“#”开头的行在大多数配置文件里表示注释,即该行不生效。把那几个“#”去掉,重新启动后即可获得全部6个控制台终端。前面提到的“rxvt”,运行时会在图形界面中虚拟一个终端窗口,由于实际功效几乎完全相同,从这里起,本文档中不论是图形界面下开启的“终端”,还是控制台下登录后的终端,如没有特别说明,均以不带引号的“终端”指代。必要时则以“虚拟终端”和“控制台终端”区分。注意,在控制台终端下登录时,“login: ”处输入帐号,“password: ”处输入口令。同样为安全起见,输入的口令不显示。控制台终端注销用命令“logout”。在控制台终端启动的后台程序不会因为注销而终止。前面说过,控制台终端“算是Linux的本来面目”。也只能“算是”,因为各终端里运行的命令行程序并不是终端本身,更不是Linux本身。像X-Window一样,那个命令行程序实质上也是个外围程序,叫“shell”。“shell”,壳。从名字看,也许你已经猜到一些东西。不错,它包含了用户界面功能,负责接收使用者输入的东西,翻译后发送给Linux内核处理。如果有输出信息,它也会把输出信息显示出来。相对DOS而言,shell就相当于“command ”。shell同样能进行由几个命令串成的“批处理”。与“command ”不同,shell的功能要强大许多。一个功能稍强的shell脚本,已经具备高级语言的语法结构,因此编写shell脚本在很多情况下也被看作是编程。一般情况下,在控制台终端登录或在图形界面下开启“终端”,默认都会启动一个shell来接待使用者。可以在shell的命令行里启动另外一个shell。退出当前shell的通用命令是“exit”。如果当前使用的shell正是控制台登录后启动的,则“exit”等效于“logout”。shell中启动的后台程序不会因正常退出而终止。所谓非正常退出,指强行杀掉这个shell;在图形界面下用“打叉”方式关闭终端也算强行终止一个shell。shell有很多种,各有特色。目前使用比较广泛的是shell是“bash”,主要的Linux发行版均以其作为默认的shell。“bash”和其他主流shell都支持一次输入多个命令,支持启动后台程序。如果要依次执行多个命令,命令间用“;”隔开;如果要让这个程序在后台运行,在命令后面加“&”。小弟我最近在看linux内核设备驱动的控制台设备驱动有几个概念我一直比较混淆,首先,虚拟控制台和虚拟终端两者到底有何区别,那在linux下控制台和终端的又是什么,还有,在/dev目录下还有一个节点/dev/console,说是用于外接的控制台,一般是连接着当前的控制台的,那么它究竟是个怎样的控制台呢,又是起着什么样的作用呢? 我想对这些基本的概念有一个比较清楚的认识,还望各位高手指教! tty是Teletype的缩写(转)终端是一种字符型设备,它有多种类型,通常使用tty来简称各种类型的终端设备。tty是Teletype的缩写。 Teletype是最早出现的一种终端设备,很象电传打字机(或者说就是),是由Teletype公司生产 的。设备名放在特殊文件目录/dev/下,终端特殊设备文件一般有以下几种: 1.串行端口终端(/dev/ttySn) 串行端口终端(Serial Port Terminal)是使用计算机串行端口连接的终端设备。计算机把每个串行端口都 看作是一个字符设备。有段时间这些串行端口设备通常被称为终端设备,因为那时它的最大用途就是用 来连接终端。这些串行端口所对应的设备名称是/dev/tts/0(或/dev/ttyS0)、/dev/tts/1(或/dev/ttyS1)等, 设备号分别是(4,0)、(4,1)等,分别对应于DOS系统下的COM1、COM2等。若要向一个端口发送数据, 可以在命令行上把标准输出重定向到这些特殊文件名上即可。例如,在命令行提示符下键 入:echo test /dev/ttyS1会把单词”test”发送到连接在ttyS1(COM2)端口的设备上。 2.伪终端(/dev/pty/) 伪终端(Pseudo Terminal)是成对的逻辑终端设备,例如/dev/ptyp3和/dev/ttyp3(或着在设备文件系统中分 别是/dev/pty/m3和/dev/pty/s3)。它们与实际物理设备并不直接相关。如果一个程序把ttyp3看作是一个串 行端口设备,则它对该端口的读/写操作会反映在该逻辑终端设备对的另一个上面(ttyp3)。而ttyp3则是 另一个程序用于读写操作的逻辑设备。这样,两个程序就可以通过这种逻辑设备进行互相交流,而其中 一个使用ttyp3的程序则认为自己正在与一个串行端口进行通信。这很象是逻辑设备对之间的管道操作。 对于ttyp3(s3),任何设计成使用一个串行端口设备的程序都可以使用该逻辑设备。但对于使用ptyp3的 程序,则需要专门设计来使用ptyp3(m3)逻辑设备。 例如,如果某人在网上使用telnet程序连接到你的计算机上,则telnet程序就可能会开始连接到设 备ptyp2(m2)上(一个伪终端端口上)。此时一个getty程序就应该运行在对应的ttyp2(s2)端口上。当telnet从 远端获取了一个字符时,该字符就会通过m2、s2传递给getty程序,而getty程序就会通过s2、m2和telnet程序 往网络上返回”login:”字符串信息。这样,登录程序与telnet程序就通过“伪终端”进行通信。通过使用适当的 软件,就可以把两个甚至多个伪终端设备连接到同一个物理串行端口上。 在使用设备文件系统(device filesystem)之前,为了得到大量的伪终端设备特殊文件,HP-UX AIX等使用了 比较复杂的文件名命名方式。 3.控制终端(/dev/tty) 如果当前进程有控制终端(Controlling Terminal)的话,那么/dev/tty就是当前进程的控制终端的设备特殊文件。 可以使用命令”ps ax”来查看进程与哪个控制终端相连。对于你登录的shell,/dev/tty就是你使用的终端,设备 号是(5,0)。使用命令”tty”可以查看它具体对应哪个实际终端设备。/dev/tty有些类似于到实际所使用终端设 备的一个联接。 4.控制台终端(/dev/ttyn, /dev/console) 在UNIX系统中,计算机显示器通常被称为控制台终端(Console)。它仿真了类型为Linux的一种终端(TERM=Linux), 并且有一些设备特殊文件与之相关联:tty0、tty1、tty2等。当你在控制台上登录时,使用的是tty1。使用Alt+F1F6组合 键时,我们就可以切换到tty2、tty3等上面去。tty1 tty6等称为虚拟终端,而tty0则是当前所使用虚拟终端的一个别名, 系统所产生的信息会发送到该终端上。因此不管当前正在使用哪个虚拟终端,系统信息都会发送到控制台终端上。 你可以登录到不同的虚拟终端上去,因而可以让系统同时有几个不同的会话期存在。只有系统或超级用户root可以 向/dev/tty0进行写操作, 5.其它类型 还针对很多不同的字符设备存在有很多其它种类的终端设备特殊文件。例如针对ISDN设备的/dev/ttyIn终端设备等。 这里不再赘述 简言之,终端是计算机和外界交换信息的字符型设备,控制台,顾名思义,它是操作系统本身和用户进行交互的字符设备,在所有终端中,可以指定某一个终端作为控制台。用dev/console这个设备名字可以代表和找到那个用于控制台的终端。对于这个问题,困惑了我也很久,这一个月时间我一直在看这个。现在发现自己概念开始有点清楚了。 首先,我们该清楚物理上存在的,称为终端。COM1、COM2称为串行终端。usb也可称为终端。 我们的显示器和键盘也组成为终端,只是这个终端还比较特殊,又被我们分成tty 0,tty1 。tty6等虚拟终端。这是为多用户登陆是使用。其实这些实际存在的终端,都有相对应的驱动存在。不过这些驱动遵循tty驱动的规则,他们都会tty_register_driver。这样他们和上层的tty层联系起来。这样,前台的应用程序就可以向你所能看到的终端输出了。 控制终端(/dev/tty) 这是个在应用程序中的一个概念,前台进程有个控制终端,就对应这个。不过它并不指任何物理意义上的终端(其实/dev/tty会映射到上面的设备(通过tty命令可以看到),不过在windows中,你会发现它映射的为伪终端)。 伪终端(/dev/pty/)这个是终端的发展,为满足现在需求(比如网络登陆、xwindow窗口的管理)。 控制台终端(/dev/console) ,我们先说特例,其实我们现实中个人pc就是这种特例。console这个概念,其实是为内核提供打印的。我们的pc,终端常用的是显示器和键盘构成,我们用户打印和内核打印都从这个终端反映给用户。所以,这里,/dev/console是连接到/dev/tty0的,其实这里有2个概念,console和tty这2个咚咚,怎么实现,其实console这个结构中有个device,这里其实就是tty0对应的一个虚拟终端设备。 如果,我们来个专门打印内核的设备(比如通过串口),我们把那个串口register_console,那么/dev/console就到这个串口设备了。这时,内核打印就到这个串口设备了,而用户的打印还是和上面的/dev/tty相关,如果/dev/tty对应/dev/tty0,那么用户打印还在窗口中出现。所以说/dev/console是用来外接控制台的。 好了,就说这么多,如果我解释的有问题,忘大家给于指点啊。呵呵,回家吃饭了。 控制台 终端CONSOLE,即控制台,是系统输出管理信息的字符输出设备,这些管理信息是由内核产生,比如系统日志、告警信息等。 Linux下默认的控制台就是键盘和显示器,而一些老式的SUN、HP、IBM服务器则使用串行口接Text Terminal作为控制台。 字符终端在大型机时代用得比较多,一个大型机通常联接许多终端,每个终端没有处理能力,只是简单地用键盘输入和从屏幕输出结果,处理过程都是由大型机完成。字符终端屏幕多为黑白字符型的,不具备图形显示功能。这里介绍的Text Terminal和大型机的终端是一样的,只不过市场上早就没有新的终端设备了,现在都是通过应用程序模拟一个终端,叫虚拟终端,如WINDOWS的超级终端就是常用的一个虚拟终端程序,在管理工作站上用打开超级终端(使用正确的速率),就相当于一个终端了.区别大体有二:1。控制台可认为是主机上本地的一个直连,它可以作为控制主机的设备,应视作系统管理员的专用设备,某些操作可以要求在控制台上才能执行;而终端可认为是远程连接(telnet)或一般操作的连接。比如,Solaris缺省设置是root用户必须在控制台上才能登录,这就明显地与远程终端不同了;2。控制台是一些系统信息的输出设备,通过它随时向系统管理员报告系统的特定事件。比如,可以修改syslog来设置telnet的事件通知,这时一个用户从远程终端上telent上来,控制台上就立刻会有报告,两者明显不同。都是虚拟的显式输出设备启动机器的那个设备叫console其他都是terminal有些系统信息只会在Console上显示,而不会在Terminal上显示的),是由Teletype公司生产的。在Linux系统的设备特殊文件目录/dev/下,终端特殊设备文件一般有以下几种:J终端是一种字符型设备,它有多种类型,通常使用tty来简称各种类型的终端设备。tty是Teletype的缩写。Teletype是最早出现的一种终端设备,很象电传打字机(或者说就是1.串行端口终端(/dev/ttySn)串行端口终端(Serial Port Terminal)是使用计算机串行端口连接的终端设备。计算机把每个串行端口都看作是一个字符设备。有段时间这些串行端口设备通常被称为终端设备,因为那时它的最大用途就是用来连接终端。这些串行端口所对应的设备名称是/dev/tts/0(或/dev/ttyS0)、/dev/tts/1(或/dev/ttyS1)等,设备号分别是(4,0)、(4,1)等,分别对应于DOS系统下的COM1、COM2等。若要向一个端口发送数据,可以在命令行上把标准输出重定向到这些特殊文件名上即可。例如,在命令行提示符下键入:echo test /dev/ttyS1会把单词”test”发送到连接在ttyS1(COM2)端口的设备上。可接串口来实验。2.伪终端(/dev/pty/)伪终端(Pseudo Terminal)是成对的逻辑终端设备,例如/dev/ptyp3和/dev/ttyp3(或着在设备文件系统中分别是/dev/pty/m3和/dev/pty/s3)。它们与实际物理设备并不直接相关。如果一个程序把ttyp3看作是一个串行端口设备,则它对该端口的读/写操作会反映在该逻辑终端设备对的另一个上面(ttyp3)。而ttyp3则是另一个程序用于读写操作的逻辑设备。这样,两个程序就可以通过这种逻辑设备进行互相交流,而其中一个使用ttyp3的程序则认为自己正在与一个串行端口进行通信。这很象是逻辑设备对之间的管道操作。 对于ttyp3(s3),任何设计成使用一个串行端口设备的程序都可以使用该逻辑设备。但对于使用ptyp3的程序,则需要专门设计来使用ptyp3(m3)逻辑设备。 例如,如果某人在网上使用telnet程序连接到你的计算机上,则telnet程序就可能会开始连接到设备ptyp2(m2)上(一个伪终端端口上)。此时一个getty程序就应该运行在对应的ttyp2(s2)端口上。当telnet从远端获取了一个字符时,该字符就会通过m2、s2传递给getty程序,而getty程序就会通过s2、m2和telnet程序往网络上返回”login:”字符串信息。这样,登录程序与telnet程序就通过“伪终端”进行通信。通过使用适当的软件,就可以把两个甚至多个伪终端设备连接到同一个物理串行端口上。 在使用设备文件系统(device filesystem)之前,为了得到大量的伪终端设备特殊文件,使用了比较复杂的文件名命名方式。因为只存在16个ttyp(ttyp0ttypf)的设备文件,为了得到更多的逻辑设备对,就使用了象q、r、s等字符来代替p。例如,ttys8和ptys8就是一个伪终端设备对。不过这种命名方式目前仍然在RedHat等Linux系统中使用着。 但Linux系统上的Unix98并不使用上述方法,而使用了”pty master” 方式,例如/dev/ptm3。它的对应端则会被自动地创建成/dev/pts/3。这样就可以在需要时提供一个pty伪终端。目录/dev/pts是一个类型为devpts的文件系统,并且可以在被加载文件系统列表中看到。虽然“文件”/dev/pts/3看上去是设备文件系统中的一项,但其实它完全是一种不同的文件系统。即TELNET -TTYP3(S3:slave)-TTYP3(M3:master)-GETTY-实验:1、在X下打开一个orN个N终端窗口 2、#ls /dev pt* 3、关闭这个X下的终端窗口,再次运行;比较两次输出信息就明白了。 在RHEL4环境下:输出为 /dev/ptmx /dev/pts/1 存在一(master)对多(slave)的情况3.控制终端(/dev/tty)如果当前进程有控制终端(Controlling Terminal)的话,那么/dev/tty就是当前进程的控制终端的设备特殊文件。可以使用命令”ps ax”来查看进程与哪个控制终端相连。对于你登录的shell,/dev/tty就是你使用的终端,设备号是(5,0)。使用命令”tty”可以查看它具体对应哪个实际终端设备。/dev/tty有些类似于到实际所使用终端设备的一个联接。4.控制台终端(/dev/ttyn, /dev/console)在Linux系统中,计算机显示器通常被称为控制台终端(Console)。它仿真了类型为Linux的一种终端(TERM=Linux),并且有一些设备特殊文件与之相关联:tty0、tty1、tty2等。当你在控制台上登录时,使用的是tty1。使用Alt+F1F6组合键时,我们就可以切换到tty2、tty3等上面去。tty1 tty6等称为虚拟终端,而tty0则是当前所使用虚拟终端的一个别名,系统所产生的信息会发送到该终端上。因此不管当前正在使用哪个虚拟终端,系统信息都会发送到控制台终端上。 你可以登录到不同的虚拟终端上去,因而可以让系统同时有几个不同的会话期存在。只有系统或超级用户root可以向/dev/tty0进行写操作 即下例:# tty(查看当前TTY)/dev/tty1#echo test tty0 /dev/tty0test tty0#5.其它类型Linux系统中还针对很多不同的字符设备存在有很多其它种类的终端设备特殊文件。例如针对ISDN设备的/dev/ttyIn终端设备等。这里不再赘述。
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!