Linux TTY(Teletypewriter)概念;虚拟终端伪终端pty(pseudo-tty、pseudo terminal)、ptmx(主设备master)pts(从设备slave)
在服务器上,TTY设备可以通过SSH等远程登录方式进行访问,管理员可以通过TTY设备管理服务器。终端设备是一种通过串行接口与计算机连接的设备,可以显示计算机的输出结果,并将用户的输入传递给计算机。伪终端是一种特殊的设备,它提供了一个类似于物理终端的接口,可以用于在用户空间和内核空间之间进行交互。与终端交互:TTY设备是用户与计算机进行交互的接口,了解TTY概念可以帮助开发者编写与终端交互的程序。需
tty是什么?
TTY(Teletypewriter)是一种早期的终端设备,用于与计算机进行通信。TTY最早出现在20世纪60年代,当时计算机主要通过电传打字机与用户进行交互。TTY设备由一个键盘和一个打印机组成,用户通过键盘输入命令,计算机将结果打印在打印机上。
随着计算机技术的发展,TTY设备逐渐演变成了终端设备。终端设备是一种通过串行接口与计算机连接的设备,可以显示计算机的输出结果,并将用户的输入传递给计算机。终端设备通常具有屏幕和键盘,用户可以通过键盘输入命令,计算机将结果显示在屏幕上。
在UNIX系统中,TTY是一个重要的概念。在早期的UNIX系统中,TTY是指与计算机进行通信的设备。每个TTY设备都有一个对应的设备文件,例如/dev/tty1
表示第一个TTY设备。用户可以通过TTY设备与计算机进行交互,输入命令并查看输出结果。
随着计算机技术的进步,TTY设备逐渐被图形界面取代。图形界面提供了更直观、易用的用户界面,用户可以通过鼠标和图形界面进行交互。然而,TTY仍然被广泛使用,特别是在服务器环境中。在服务器上,TTY设备可以通过SSH等远程登录方式进行访问,管理员可以通过TTY设备管理服务器。
ls -l /dev/ | grep "tty"
为什么要了解tty?
了解TTY概念有以下几个用途:
-
与终端交互:TTY设备是用户与计算机进行交互的接口,了解TTY概念可以帮助开发者编写与终端交互的程序。例如,可以使用TTY设备读取用户的输入,并将结果显示在终端上。
-
控制终端属性:TTY设备具有一些属性,如终端大小、字符编码等。了解TTY概念可以帮助开发者控制终端属性,例如改变终端大小、设置字符编码等。
-
串口通信:在一些特定的应用场景中,需要通过串口与外部设备进行通信。串口设备也是一种TTY设备,了解TTY概念可以帮助开发者编写串口通信程序,与外部设备进行数据交换。
-
远程登录:在服务器环境中,管理员通常通过SSH等远程登录方式访问服务器。远程登录也是通过TTY设备进行的,了解TTY概念可以帮助开发者编写远程登录相关的程序。
有哪些linux命令涉及到tty?
在Linux中,有一些命令涉及到TTY设备,用于与终端进行交互或控制终端属性。以下是一些常见的与TTY相关的Linux命令:
tty
:显示当前终端的TTY设备文件路径。
stty
:用于设置和显示终端设备的属性。可以使用stty
命令来修改终端的行为,如修改终端大小、字符编码等。
who
:显示当前登录到系统的用户信息,包括登录用户的TTY设备。
在Linux中,who
命令用于显示当前登录到系统的用户信息,包括登录用户的终端设备。在较新的Linux系统中,终端设备通常以pts/
开头,而不是以tty
开头。
pts
代表伪终端从设备(pseudo terminal slave)。伪终端是一种虚拟的终端设备,用于在客户端和服务器之间建立一个虚拟的终端会话。当用户通过SSH等远程登录方式登录到Linux系统时,会在服务器上创建一个伪终端设备,用于与用户进行交互。
相比于传统的物理终端设备(如TTY设备),伪终端设备具有更多的灵活性和功能。它可以在网络上远程访问,支持多个用户同时登录,以及提供更多的终端功能。
因此,当使用who
命令查看当前登录用户时,显示的终端设备可能是以pts/
开头的,而不是以tty
开头的。这是因为可能是通过SSH等远程登录方式登录到系统的,所以显示的是伪终端设备。
需要注意的是,虽然终端设备的名称可能不同,但它们在功能上是相似的,都可以用于与用户进行交互和执行命令。
w
:显示当前登录到系统的用户信息,包括登录用户的TTY设备和活动时间。
write
:向指定用户的TTY设备发送消息。
mesg
:控制是否接受其他用户发送的消息。可以使用mesg
命令来设置TTY设备的消息接收权限。
wall
:向所有登录用户的TTY设备发送消息。
示例:
login
:用于登录到系统,与TTY设备进行交互。
logout
:用于注销当前用户,关闭TTY设备。
getty
:用于启动终端登录程序,监听TTY设备上的用户登录请求。
pgrep
:用于根据进程的名称或其他属性查找正在运行的进程,并返回与之匹配的进程ID(PID)。它可以根据进程的TTY设备来查找进程。
这些命令涉及到TTY设备的操作和管理,可以帮助用户与终端进行交互、控制终端属性、发送消息等。
关于伪终端pty(pseudo terminal)
pty
是pseudo terminal
的缩写,中文意思为“伪终端”。伪终端是一种虚拟的终端设备,用于在客户端和服务器之间建立一个虚拟的终端会话。
在Linux系统中,伪终端由两个部分组成:主设备(master)和从设备(slave)。主设备负责接收和发送数据,而从设备则负责将数据传递给应用程序或从应用程序接收数据。
伪终端的主要作用是允许用户通过网络或其他方式远程登录到系统,并在远程终端上执行命令和交互。它提供了一种虚拟的终端环境,使得用户可以像在本地终端上一样与系统进行交互。
伪终端还具有其他一些功能,例如支持多个用户同时登录,支持会话复制和断开重连等。它在远程管理、远程登录和远程终端访问等场景中广泛应用。
pty包含ptmx和pts(主设备和从设备)
在Linux系统中,ptmx
和pts
是用于实现伪终端(pseudo terminal)的设备。
伪终端是一种特殊的设备,它提供了一个类似于物理终端的接口,可以用于在用户空间和内核空间之间进行交互。它通常用于实现终端仿真器(如xterm、gnome-terminal等)或远程登录工具(如ssh)。
-
ptmx
是伪终端的主设备(master),它用于创建新的伪终端设备。当应用程序需要创建一个新的伪终端时,它可以通过打开/dev/ptmx
设备文件来获取一个文件描述符。然后,应用程序可以使用ioctl
系统调用来获取与该文件描述符关联的从设备文件路径(/dev/pts/N
,其中N是一个数字)。 -
pts
是伪终端的从设备(slave),每个从设备对应一个打开的ptmx
设备。应用程序可以通过打开/dev/pts/N
设备文件来与伪终端进行交互。例如,应用程序可以通过读写/dev/pts/N
设备文件来向终端发送输入和接收输出。
通过使用ptmx
和pts
设备,应用程序可以实现与终端类似的交互体验,包括输入、输出、控制终端大小等功能。
更多推荐
所有评论(0)