客服微信
本文为云贝教育 刘老师 原创,请尊重知识产权,转发请注明出处,不接受任何抄袭、演绎和未经注明出处的转载。
在Linux操作系统中,TTY(Teletypewriter)和PTS(Pseudo Terminal Slave)是两种不同的终端类型。它们各自有不同的用途和特性,对于理解Linux的用户交互界面以及如何进行远程登录等操作至关重要。
1. tty(Teletype)
• 定义与历史
tty 是物理终端或虚拟终端的抽象,源自早期的电传打字机(Teletype)。在现代Linux中,每个物理终端或虚拟控制台(如通过 Ctrl+Alt+F1~F6 切换的界面)对应一个 tty 设备。
• 设备文件
设备文件位于 /dev/ttyN(如/dev/tty1),或虚拟终端如/dev/ttyS0(串口终端)。
• 使用场景
◦ 物理控制台(直接连接的键盘和显示器)。
◦ 通过 Ctrl+Alt+Fn 切换的虚拟终端。
◦ 串口终端(如嵌入式设备调试)。
• 特点
◦ 直接与内核交互,无需网络协议。
◦ 权限控制严格(如 /etc/securetty 可限制root登录的tty设备)。
2. pts(Pseudo-Terminal Slave)
• 定义与用途
pts 是伪终端(Pseudo-Terminal)的从设备端,用于模拟终端行为。通常与 ptmx(伪终端主设备)配对出现,由终端模拟器(如SSH、图形界面终端)创建。
• 设备文件
动态创建的设备位于 /dev/pts/N(如/dev/pts/0),每个会话分配一个唯一编号。
• 使用场景
◦ SSH远程登录。
◦ 图形界面中的终端模拟器(如GNOME Terminal、Konsole)。
◦ screen或tmux多路复用会话。
• 特点
◦ 通过主从设备对(ptmx和pts)实现数据转发。
◦ 支持网络传输(如SSH加密通信)。
◦ 用户权限更灵活(取决于启动进程的用户)。
3. 核心区别
特性
tty
pts
设备类型
物理终端或虚拟控制台
伪终端(网络/模拟终端)
设备路径
/dev/ttyN或/dev/ttySN
/dev/pts/N
创建方式
系统启动时预分配
动态创建(按需生成)
依赖关系
直接连接或虚拟控制台
需主设备(ptmx)配合
典型应用
本地控制台、串口设备
SSH、图形终端、终端多路复用
4. 查看当前终端类型
• 命令示例
# 查看当前终端设备文件路径 $ tty /dev/pts/0 # 若为伪终端,显示pts;若为物理终端,显示ttyN
# 查看进程关联的终端
$ ps -p $$ # 查看当前Shell的终端信息
5. 伪终端(PTS)的工作流程
1. 主从设备创建
当用户通过SSH或图形终端登录时,终端模拟器(如 sshd )创建一对伪终端:
◦ 主设备(ptmx):由终端模拟器控制,负责接收用户输入。
◦ 从设备(pts):关联到用户的Shell进程,接收主设备转发的内容。
2. 数据流
用户输入 → 主设备( ptmx ) → 从设备( pts ) → Shell进程
Shell输出 → 从设备( pts ) → 主设备( ptmx ) → 终端显示
6. 常见问题
• 为什么SSH会话显示为pts?
SSH通过伪终端模拟终端行为,因此会话关联到/dev/pts/N。
• 如何限制用户通过pts登录?
修改/etc/securetty文件(仅列出允许的tty设备,不包含pts)。
• tty和pts的权限差异
tty设备通常属于root:tty,而pts设备属于启动它们的用户。
总结
tty:直接与硬件或虚拟控制台关联,适合本地操作。
pts:通过伪终端模拟,用于远程或图形环境,灵活性更高。
理解两者区别有助于排查终端权限、会话管理等问题(如SSH配置或/dev设备权限错误)。
想了解更多相关的学习资料(技术文章和视频),可以微信公众号或B站搜索《云贝教育》,免费获取。
需要课程资料的同学可以私聊课程顾问:19906733890(微信同号)