在刚开始学习Linux时,对物理终端、虚拟终端以及伪终端的概念非常困惑,此文是我马哥培训学习后对这些概念的理解。
- 物理终端:直接连接在主机上的显示器、键盘鼠标统称。在实际机架式服务器部署中,一般是多台服务器共享一套终端,简称KVM(Keyboard键盘,video显示器,mouse鼠标)
- 虚拟终端(tty):附加在物理终端之上,用软件方式虚拟实现,CentOS默认启用6个虚拟终端,可以通过快捷键来切换,切换方式:Ctrl-Alt-F[1--6], 对应的文件是/dev/tty#。可以同过tty命令来查看当前的虚拟终端号。tty是teletypewriter的简称。
- 伪终端(pty):两种应用场景,第一在图形界面下打开的命令行接口,第二基于ssh协议或telnet协议等远程打开的命令行界面,是运维工程师用的最多的一种连接服务器的方式。pts(pseudo-terminal slave)是pty的实现方法。
下面以虚拟机为例子用命令查看登录的终端类型以及具体的终端代号。具体的命令
tty, who, w,其中tty只显示本终端的类型和终端号:
root@centos7 dev#]tty
/dev/pts/3
显示为代号为3的伪终端
root@centos7 dev#]tty
/dev/tty4
显示为代号为4的虚拟终端
root@centos7 ~#]who
vmx :0 2018-03-26 19:07 (:0)
vmx pts/0 2018-03-26 19:07 (:0)
vmx pts/1 2018-03-26 19:40 (192.168.73.1)
vmx pts/2 2018-03-26 19:17 (192.168.73.1)
root tty3 2018-03-26 19:18
root tty2 2018-03-26 19:23
root tty4 2018-03-26 19:23
root tty5 2018-03-26 19:23
root tty6 2018-03-26 19:23
root pts/3 2018-03-26 19:41 (192.168.73.1)
:0 代表图形界面登录
在这个例子中,一共有5个虚拟终端4个伪终端登录。
[root@centos7 profile.d#]w
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
vmx :0 :0 19:07 ?xdm? 1:12 0.06s /bin/sh /usr/bin/startkde
vmx pts/0 :0 19:07 1:31m 0.00s 1.47s kdeinit4: kded4 [kdeinit]
vmx pts/1 192.168.73.1 19:40 7.00s 0.17s 0.24s sshd: vmx [priv]
vmx pts/2 192.168.73.1 19:17 2:15 0.17s 0.26s sshd: vmx [priv]
root tty3 19:18 1:14m 0.06s 0.06s -bash
root tty2 19:23 1:14m 0.13s 0.13s -bash
root tty4 19:23 4:15 0.05s 0.05s -bash
root tty5 19:23 1:14m 0.03s 0.03s -bash
root tty6 19:23 10:39 0.04s 0.04s -bash
root pts/3 192.168.73.1 19:41 9.00s 0.34s 0.01s vi anaconda-ks.cfg
相比who命令,w命令更详细,包括登录时刻,空闲时间(具体指虽然连接保持,但是没有指令在执行),同时能显示具体执行的指令,如伪终端pts/3是来自IP为192.168.73.1的远程连接,正在执行vi anaconda-ks.cfg的操作。