linux 系统tty、pty和pts 的概念及区别

  1. tty(终端设备的统称):
    tty一词源于Teletypes,或者teletypewriters,原来指的是电传打字机,是通过串行线用打印机键盘通过阅读和发送信息的东西,后来这东西被键盘与显示器取代,所以现在叫终端比较合适。
    终端是一种字符型设备,它有多种类型,通常使用tty来简称各种类型的终端设备。

tty指的是七个alt+crtl+F1~F7

tty1-tty6表示文字界面,可以用Ctrl+Alt+F1-F6切换,+F7就是切换回图形界面。

在Linux系统中,计算机显示器通常被称为控制台终端(Console)。它仿真了类型为Linux的一种终端(TERM=Linux),并且有一些设备特殊文件与之相关联:tty0、tty1、tty2等。
当你在控制台上登录时,使用的是tty1。使用Alt+[F1—F6]组合键时,我们就可以切换到tty2、tty3等上面去。
tty1 –tty6等称为虚拟终端,
而tty0则是当前所使用虚拟终端的一个别名,系统所产生的信息会发送到该终端上。
因此不管当前正在使用哪个虚拟终端,系统信息都会发送到控制台终端上。
你可以登录到不同的虚拟终端上去,因而可以让系统同时有几个不同的会话期存在。
只有系统或超级用户root可以向/dev/tty0进行写操作。

  1. pty(虚拟终端):
    但是如果我们远程telnet到主机或使用xterm时不也需要一个终端交互么?是的,这就是虚拟终端pty(pseudo-tty)。

  2. pts/ptmx(pts/ptmx结合使用,进而实现pty): 在Xwindows模式下的伪终端。
    pts(pseudo-terminal slave)是pty的实现方法,与ptmx(pseudo-terminal master)配合使用实现pty。
    man里面是这样说的:ptmx and pts - pseudo-terminal master and slave,
    pts是所谓的伪终端或虚拟终端,具体表现就是你打开一个终端,这个终端就叫pts/0,如果你再打开一个终端,这个新的终端就叫pts /1。

比如用who命令查询当前登录的用户,可以看到每个用户的TTY设备(简单来说就是用户输入命令还有显示信息的设备,比如终端),下面是我机器上的显示:
[root@localhost ~]# who
xjb tty1 2018-02-18 03:01 (:0)
xjb pts/0 2018-02-18 03:02 (:0.0)
root pts/1 2018-02-18 03:06 (192.168.31.1)
root pts/2 2018-02-18 03:07 (192.168.31.1)
root pts/3 2018-02-18 03:07 (192.168.31.1)
root pts/4 2018-02-18 03:07 (192.168.31.1)
[root@localhost ~]#

有一个tty1是表示图形界面,当前登录的是GNOME,是图形界面了。

(:0.0) 表示在服务器登录的

两个pts间发送消息

[root@localhost ~]# tty
/dev/pts/3
[root@localhost ~]# echo "Hey Binn. how are you?" > /dev/pts/2

[root@localhost ~]# tty
/dev/pts/2
[root@localhost ~]# Hey Binn. how are you?

linux 系统tty、pty和pts 的概念及区别_第1张图片

好玩的事,直接给它发红色字体消息。
颜色代码详情请参阅ANSI控制码。
[root@localhost ~]# echo -e "\033[31mHey. Binn.\033[0m" > /dev/pts/2

linux 系统tty、pty和pts 的概念及区别_第2张图片