在刚开始学习Linux时,对物理终端、虚拟终端以及伪终端的概念非常困惑,此文是我马哥培训学习后对这些概念的理解。

    1. 物理终端:直接连接在主机上的显示器、键盘鼠标统称。在实际机架式服务器部署中,一般是多台服务器共享一套终端,简称KVMKeyboard键盘,video显示器,mouse鼠标)
    2. 虚拟终端(tty):附加在物理终端之上,用软件方式虚拟实现,CentOS默认启用6个虚拟终端,可以通过快捷键来切换,切换方式:Ctrl-Alt-F[1--6], 对应的文件是/dev/tty#。可以同过tty命令来查看当前的虚拟终端号。ttyteletypewriter的简称。
    3. 伪终端(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是来自IP192.168.73.1的远程连接,正在执行vi anaconda-ks.cfg的操作。