linux 终端

290 阅读5分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

终端的分类

1.控制台
|___系统控制台/dev/console
|___当前控制台/dev/tty
|___虚拟控制台 /dev/ttyn
2.伪终端(pseudo-tty)/dev/pty
|___Unix 98接口:
		|___使用一个/dev/ptmx作为master设备
		|___在/dev/pts/目录下得到一个slave设备
3.串口终端(Serial Port Terminal)/dev/ttySn
4.其他终端
|___很多不同的字符设备:例如针对ISDN设备的/dev/ttyIn终端设备等

terminal 是现实生活中对终端的直译。
最初在linux中/dev/tty是电传打字机(Teletype)的抽象
随着时代的发展,电传打字机早已被键盘显示器替代

/dev/tty 这个字符设备文件保留了下来,如今更像是终端设备的统称 ---控制终端

终端的作用

终端设备作用描述
/dev/tty(5,0)进程中的概念• 历史上,tty指用电缆链接的其它位置的控制台。• 若当前进程有控制终端,那么/dev/tty就是当前进程控制台的设备文件• 若在字符终端下,/dev/tty会映射到dev/tty1-6之间的一个• 若在图形终端下,/dev/tty会映射到/dev/pts的伪终端上
/dev/console(5.1)单用户模式下才允许用户登录/dev/console• 历史上,console指主机本身的屏幕和键盘。在UNIX系统中,计算机显示器通常被称为控制台(Console)• console有缓冲的概念,为内核提供打印输出。内核把要打印的内容装入缓冲区__log_buff,然后由console来决定打印到哪里(比如是tty0还是ttySn等)。• 指向激活的终端。若当前所使用的是虚拟终端时,console和tty0是一致的
/dev/pty /dev/pts /dev/ptmx(5,2)用于模拟终端程序中• 伪终端(Pseudo Terminal)是终端的发展,为满足现在需求(比如网络登陆、xwindow窗口的管理)。• 它是成对出现的逻辑终端设备(即master和slave设备, 对master的操作会反映到slave上)。• 它多用于模拟终端程序,是远程登陆(telnet、ssh、xterm等)后创建的控制台设备。
/dev/tty0(4,0)仅root用户可以向/dev/tty0进行写操作• 代表当前虚拟控制台。是当前所使用虚拟控制台的一个别名。不管当前正在使用哪个虚拟控制台(注意:这里是虚拟控制台,不包括伪终端),系统信息都会发送到/dev/tty0上。• tty0是系统自动打开的,但不用于用户登录。在Framebuffer设备没有启用的系统中,可以使用/dev/tty0访问显卡。
/dev/ttyn(4,n)进程的虚拟控制台• 所有的虚拟控制台共享一个真实的物理控制台• 进程printf数据会输出到这里• /dev/tty1等代表第一个虚拟控制台,用户可以使用alt+Fn切换控制台
/dev/ttySn(4,n+64)使用计算机串行端口连接的终端设备• 串行端口终端(Serial Port Terminal)是使用计算机串行端口连接的终端设备。计算机把每个串行端口都看作是一个字符设备。• 有段时间串行端口设备通常被称为终端设备,那时它的最大用途就是用来连接终端,所以这些串行端口所对应的设备名称是/dev/tts/0(或/dev/ttyS0)、/dev/tts/1(或/dev /ttyS1)等,设备号分别是(4,0)、(4,1)等(对应于win系统下的COM1、COM2等)。

控制台与终端

其实起初终端和控制台都不是个人电脑的概念,而是多人共用的小型中型大型计算机上的概念。
• 控制台是一种特殊的人机接口, 是人控制主机的第一人机接口。而主机对于控制台的信任度高于其他终端。
• 终端为主机提供了人机接口,每个人都通过终端使用主机的资源。终端有字符终端和图形终端两种。一台主机可以连很多终端。

 对此还可以结合内核启动代码中init进程打开/dev/console和执行两次sys_dup(0),以及标准输入、标准输出、标准出错,还有就是进程fork后的标准输入输出的复制情况来一起理解。

而个人计算机只有控制台,没有终端。当然愿意的话,可以在串口上连一两台字符哑终端。
但是linux按POSIX标准把个人计算机当成小型机来用,在控制台上通过getty软件虚拟了
• 6个字符哑终端(即虚拟控制台终端tty1-tty6),数量可以在/etc/inittab里自己调整。
• 1个图型终端(X-Window)
    ○ 在虚拟图形终端中又可以通过软件(如rxvt)再虚拟无限多个伪终端(pts/0等)。
但这全是虚拟的,虽然用起来一样,但实际上没有物理实体。所以在个人计算机上,只有一个实际的控制台,没有终端,所有终端都是在控制台上用软件模拟的。要把个人计算机当主机再通过串口或网卡外连真正的物理终端也可以,论成本,谁会怎么做呢。