首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

linux 的tty和pts

TTY(Teletypewriter)和PTS(Pseudo-Terminal Slave)是Linux系统中的终端相关概念。

一、基础概念

  1. TTY
    • 在早期的计算机系统中,TTY是实际的物理终端设备,用于用户输入命令并查看输出结果。它是一种硬件设备,通过串口等接口连接到计算机主机。例如,在老式的电传打字机时代,TTY就是那种可以直接连接到计算机的设备。
    • 在现代Linux系统中,TTY仍然存在,但更多的是作为一种内核级别的终端抽象概念。当系统启动时,会创建一定数量(通常是6个或更多)的虚拟TTY设备,如 /dev/tty1/dev/tty2等。这些虚拟TTY可以被不同的用户会话或者系统进程使用,例如,在没有图形界面的多用户服务器环境中,不同的用户可以通过登录到不同的虚拟TTY来进行操作。
  • PTS
    • PTS是为了支持伪终端而存在的。伪终端是一种软件模拟的终端设备。当一个程序(如SSH客户端或者图形界面中的终端模拟器)想要与另一个程序(如SSH服务器或者shell)进行交互,就好像是在一个真实的终端下一样时,就会使用伪终端。
    • PTS是一对设备文件,主设备(如 /dev/pts/0中的主部分)和从设备(从部分)。主设备由发起交互的程序打开,用于向从设备发送控制信号和数据,从设备则被目标程序(如shell)当作普通的终端设备来使用。

二、优势

  1. 灵活性
    • 对于开发人员来说,无论是编写需要在终端下运行的脚本还是构建远程登录等功能,理解TTY和PTS的概念有助于更好地处理终端相关的操作。例如,在编写一个可以通过SSH远程执行的自动化脚本时,利用伪终端(PTS)可以确保脚本的输出和输入能够正确地模拟本地终端的行为。
  • 多用户支持
    • 多个用户可以同时登录到不同的虚拟TTY或者通过伪终端(PTS)进行交互,互不干扰。这在服务器环境中非常重要,管理员可以同时管理多个用户会话,而每个用户都感觉自己在使用独立的终端。

三、应用场景

  1. 远程登录
    • 当使用SSH(Secure Shell)进行远程登录时,SSH客户端和服务器之间通过伪终端(PTS)进行通信。这样,在远程服务器上运行的shell会话就像是在本地终端下一样,可以正确处理输入输出。
  • 终端模拟器
    • 在图形界面环境下,如GNOME Terminal或者Konsole等终端模拟器,它们内部使用伪终端(PTS)来与后台运行的shell或者其他命令行程序进行交互。

四、常见问题及解决方法

  1. 权限问题
    • 有时候可能会遇到对 /dev/pts目录下设备文件权限不足的情况。例如,在某些系统中,默认情况下普通用户可能无法访问特定的PTS设备。这可能是由于系统的安全策略或者权限设置导致的。
    • 解决方法:可以检查系统的 udev规则文件(通常位于 /etc/udev/rules.d/目录下),确保没有不合理的权限限制。如果是特定程序访问PTS设备出现问题,可以尝试以具有足够权限的用户身份运行该程序(如使用 sudo命令,但要注意安全性)。
  • 终端显示异常
    • 在某些情况下,使用伪终端(PTS)时可能会出现终端显示乱码或者控制字符无法正确处理的问题。
    • 解决方法:
      • 检查终端模拟器的设置,确保其编码设置(如UTF - 8)与服务器端的设置一致。
      • 可以尝试重新启动终端模拟器或者重新建立伪终端连接。如果是脚本导致的问题,检查脚本中对终端相关操作(如输出控制字符)的处理是否正确。

以下是一个简单的在Python中使用伪终端(PTS)的示例代码(使用 pty模块):

代码语言:txt
复制
import pty
import os
import sys

def run_command(cmd):
    master_fd, slave_fd = pty.openpty()
    try:
        pid = os.fork()
        if pid == 0:
            # 子进程执行命令
            os.close(master_fd)
            os.dup2(slave_fd, sys.stdout.fileno())
            os.dup2(slave_fd, sys.stdin.fileno())
            os.dup2(slave_fd, sys.stderr.fileno())
            os.execlp(cmd, cmd)
        else:
            # 父进程读取命令输出
            while True:
                try:
                    data = os.read(master_fd, 1024)
                    if not data:
                        break
                    sys.stdout.write(data.decode())
                    sys.stdout.flush()
                except OSError:
                    break
    finally:
        os.close(master_fd)
        os.close(slave_fd)

run_command('ls -l')

这个示例代码展示了如何在Python中使用伪终端来执行一个命令(这里是 ls -l)并读取其输出。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Linux中的tty与pts

2.伪终端(/dev/pty/)   伪终端(Pseudo Terminal)是成对的逻辑终端设备,例如/dev/ptyp3和/dev/ttyp3(或着在设备文件系统中分别是/dev/pty/m3和...它的对应端则会被自动地创建成/dev/pts/3。这样就可以在需要时提供一个pty伪终端。目录 /dev/pts是一个类型为devpts的文件系统,并且可以在被加载文件系统列表中看到。...虽然“文件”/dev/pts/3看上去是设备文件系统中的一项,但其实它完全是一种不同的文件系统。...在RHEL4环境下:输出为 /dev/ptmx /dev/pts/1 存在一(master)对多(slave)的情况   3.控制终端(/dev/tty)   如果当前进程有控制终端(Controlling...它仿真了类型为Linux的一种终端(TERM=Linux),并且有一些设备特殊文件与之相关联:tty0、tty1、tty2等。当你在控制台上登录时,使用的是tty1。

5.7K20

Linux 终端tty pty pts描述

在使用Linux的过程中,当我们通过ssh或者telnet等方式连接到服务器之后,会有一个相应的终端来对应。而在直接登陆到Linux服务器的时候也有一个对应的终端。...因此一台计算机上有很多种不同的终端设备也和正常。也就是说终端就是为主机提供了人机接口,每个人都通过终端使用主机的资源。终端有字符终端和图形终端两种。同时这些大型计算机还配有控制台。...进入图形界面(tty7):[Ctrl] + [Alt] + [F7] 3、tty(终端设备的统称) tty一词源于Teletypes,或teletypewriters,原来指的是电传打字机,是通过串行线用打印机键盘通过阅读和发送信息的东西...它是成对出现的逻辑终端设备(即master和slave设备, 对master的操作会反映到slave上。...也就是说pts(pseudo-terminal slave)是pty的实现方法,和ptmx(pseudo-terminal master)配合使用实现pty。

7K30
  • linux tty_linux tty

    文章目录 Linux中的tty与pts **终端特殊设备文件一般有以下几种:** **1、串行端口终端(/dev/ttySn)** **2、伪终端(/dev/pty/)** 3、控制终端(/dev/tty...) 4、控制台终端(/dev/ttyn, /dev/console) 5、其它类型 **FAQ: 终端和控制台** Linux中的tty与pts tty是真的,pts是假的,相互对应 ---- 终端是一种字符型设备...tty是Teletype的缩写。 Teletype是最早出现的一种终端设备——可以称作电传打字机,由Teletype公司生产。tty在Linux系统的设备特殊文件目录/dev/下。...它仿真了类型为Linux的一种终端(TERM=Linux),并且有一些设备特殊文件与之相关联:tty0、tty1、tty2等。 当你在控制台上登录时,使用的是tty1。...tty0 5、其它类型 Linux系统中还针对很多不同的字符设备存在有很多其它种类的终端设备特殊文件。

    4.8K21

    linux中tty由来

    tty是电传打字机的简写。 现代的tty概念 现在,你一定想知道,它是如何进入现代计算和Linux的?首先,当电传打字机进入市场时,几年后开发了半导体晶体管,然后演变成微处理器,使计算机成为可能。...例如,GNOME 终端或Konsole是你可以找到的适用于Linux的最好的终端模拟器。 Linux中的TTY 说到 Linux,TTY是UNIX 和Linux 中的一个抽象设备。...TTY是Linux和Unix中的一个子系统,它通过TTY驱动程序使进程管理、行编辑和会话管理在内核中成为可能。在编程方面,你需要深入研究。但是,考虑到本文的范围,这可能是一个容易消化的定义。...如果你好奇,你可以探索一个旧资源 ( TTY Demystified ),它试图清除Linux和Unix系统中的所有技术细节让你了解TTY。...但是,前两个快捷方式指向发行版的锁定屏幕和桌面环境。因此,你将获得带有其余快捷方式的命令行界面。 在Linux中什么时候使用TTY tty不仅仅是技术宝藏。

    3.6K20

    linux下tty详解

    它仿真了类型为Linux的一种终端(TERM=Linux),并且有一些设备特殊文件与之相关联:tty0、tty1、tty2等。这些文件赋予了linux同时处理多任务,多窗口切换的能力。...我们通常在linux下看到的控制台一般是/dev/ttyN,用户可以使用alt+Fn切换控制台,看起来感觉存在多个屏幕。...这种虚拟控制台对应tty1~n,(ssh就是这样,当你通过ssh登录一台服务器以后,就会在/dev/pts/下生成一个控制台设备文件,对应ttyN,通常情况下,1<=n<=63)其中 : tty0就是/...查看我当前tty: ~ » tty /dev/pts/4 现在我们在打开一个终端: ~ » tty /dev/pts/5 你会发现/dev/pts/下多了一个文件,这就是我们当前终端的控制台 你可以使用...你还可以使用ps -ef | grep pts/4查看tty4终端运行的进程,以及pid,找到了pid,你就可以用kill,结束tty4终端上的服务。 或者使用w命令查看登录用户正在使用的进程信息。

    16.3K10

    理解音视频 PTS 和 DTS

    这时就需要我们来了解另外两个概念:DTS 和 PTS。...需要注意的是:虽然 DTS、PTS 是用于指导播放端的行为,但它们是在编码的时候由编码器生成的。 当视频流中没有 B 帧时,通常 DTS 和 PTS 的顺序是一致的。...比如一个视频中,帧的显示顺序是:I B B P,现在我们需要在解码 B 帧时知道 P 帧中信息,因此这几帧在视频流中的顺序可能是:I P B B,这时候就体现出每帧都有 DTS 和 PTS 的作用了。...在播放时,读取数据帧上的时间戳,同时参考当前参考时钟上的时间来安排播放。这里的说的时间戳就是我们前面说的 PTS。实践中,我们可以选择:同步视频到音频、同步音频到视频、同步音频和视频到外部时钟。...参考 理解音视频 PTS 和 DTS | www.samirchen.com MPEG-2 Wiki MPEG-2 的同步及时间恢复 Synching Video 转载自:https://www.cnblogs.com

    4.7K21

    【linux命令讲解大全】144.终端命令 tty 和 write 的使用指南

    tty 显示连接到当前标准输入的终端设备文件名 概要 tty [option] ... 主要用途 显示连接到当前标准输入的终端设备文件名,当标准输入不是终端时打印 “not a tty”。...例子 显示连接到当前标准输入的终端设备文件名。 [root@localhost ~]# tty /dev/pts/2 查找终端关联的进程(假设是 pts/2) # 注意是筛选 TTY 列。...ps -ef | egrep "pts/2 " | grep -v grep 注意 该命令是GNU coreutils包中的命令,相关的帮助信息请查看man -s 1 tty,info coreutils...实例 传信息给Rollaend,此时Rollaend只有一个连线 : write Rollaend 接下来就是将信息打上去,结束请Ctrl+C: 传信息给Rollaend、Rollaend的连线有pts.../2、pts/3: write Rollaend pts/2 接下来就是将信息打上去,结束请Ctrl+C: 若对方设定mesg n,则此时信息将无法传给对方。

    19410

    tty各种设备的情况

    (3)伪终端(/dev/pty/) 伪终端(Pseudo Terminal)是成对的逻辑终端设备(即master和slave设备, 对master的操作会反映到slave上)。...例如/dev/ptyp3和/dev/ttyp3(或者在设备文件系统中分别是/dev/pty/m3和 /dev/pty/s3)。它们与实际物理设备并不直接相关。...它仿真了类型为Linux的一种终端(TERM=Linux),并且有一些设备特殊文件与之相关联:tty0、tty1、tty2 等。当你在控制台上登录时,使用的是tty1。...使用Alt+[F1—F6]组合键时,我们就可以切换到tty2、tty3等上面去。tty1–tty6等称为虚拟终端,而tty0则是当前所使用虚拟终端的一个别名,系统所产生的信息会发送到该终端上。...printk  -->   console   -->  ttySAC0 (5)虚拟终端(/dev/pts/n) 在Xwindows模式下的伪终端.

    2.4K100

    Linux系统安全 | Linux中的Shell和Bash

    目录 shell shell script sh bash Dash tty、pty和pts 学安全的我们,经常会听到说获得某服务器的shell,就是指获得某个服务器的操作权限...它接收用户命令,然后调用相应的应用程序。 我们先来看一些Linux系统的结构 位于最内层的是硬件,然后是Linux系统内核。shell介于用户和系统内核之间。 那么shell的功能是什么呢?.../bin/sh”,则我们使用命令:sh script_name.sh 时是调用的dash去解释脚本;Debian下默认使用的还是bash,只不过sh指向的是dash tty 、pty 和 pts...这里再多说一点,说说我们经常看到的 tty 和 pts 。...tty就是linux里面终端的意思,你每一个可以输入shell进行解析的当前框,就是终端。 pty就是虚拟终端。 pts是终端的一个实例化。

    1.6K20

    Linux系统安全 | Linux中的Shell和Bash

    学安全的我们,经常会听到说获得某服务器的shell,就是指获得某个服务器的操作权限。我们学习linux时,经常会遇到bash,bash也是指的是某个服务器的权限。那么,这两者有什么区别和联系呢?...它接收用户命令,然后调用相应的应用程序。 我们先来看一些Linux系统的结构 ? 位于最内层的是硬件,然后是Linux系统内核。shell介于用户和系统内核之间。 那么shell的功能是什么呢?...tty 、pty 和 pts 这里再多说一点,说说我们经常看到的 tty 和 pts 。 tty就是linux里面终端的意思,你每一个可以输入shell进行解析的当前框,就是终端。...比如,下图 我们这里打开了三个终端,第一个终端tty实例化为 pts/0,第二个终端tty实例化为 pts/1 ,第三个终端tty实例化为 pts/2 ,如果我们现在用Xshell远程连接,那么Xshell...终端tty实例化为 pts/3。

    3K10

    09_Linux基础-SHELL-标准输入与标准输出-重定向-管道

    的显示顺序调整每行的位置,最后保存退出;同时编辑file1和file2,接着从file1切换到file2,然后 再快速切换回来,接着将file2的内容读到file1内容的末尾,显示文件file1内容的行号...真实终端tty知识点1.3 虚拟终端pts 真实终端ttyroot@sanchuang-linux dev# cd /dev/ptsroot@sanchuang-linux pts# ls0 1...2 3 4 5 6 ptmxroot@sanchuang-linux pts# pts是别人连接到服务器的虚拟终端(远程控制)。...type 面向用户使用的接口`tty1:真实终端`tty1==>`直接登录进去 操纵的第一个终端`(真实终端)Linux里最多允许`6个`可以直接登录的终端(即`真实终端tty`)tty2~tty6...需要的时候使用`Alt+F1` tty1 回到第一个终端`Alt+F2` tty2 回到第二个终端`pts/1:虚拟终端`,给别人用的。

    2.1K10

    Linux基础之终端、控制台、tty、pty等概念简介

    基本概念: 1>tty(终端设备的统称): tty一词源于teletypes,或者teletypewriters,原来指的是电传打字机,是通过串行线用打印机键盘阅读和发送信息的东西,后来这东西被键盘与显示器取代...是的,这就是虚拟终端pty(pseudo-tty) 3>pts/ptmx(pts/ptmx结合使用,进而实现pty): pts(pseudo-terminal slave)是pty的实现方法,与ptmx...例如/dev/ptyp3和/dev/ttyp3(或者在设备文件系统中分别是/dev/pty /m3和 /dev/pty/s3)。它们与实际物理设备并不直接相关。...它仿真了类型为Linux的一种终端(TERM=Linux),并且有一些设备特殊文件与之相关联:tty0、tty1、tty2 等。当你在控制台上登录时,使用的是tty1。...5、虚拟终端(/dev/pts/n) 在Xwindows模式下(图形界面下)的伪终端.如我在Kubuntu下用konsole,就是用的虚拟终端,用tty命令可看到/dev/pts/1。

    3.4K00

    Linux基础之终端、控制台、tty、pty等概念简介

    基本概念: 1>tty(终端设备的统称): tty一词源于teletypes,或者teletypewriters,原来指的是电传打字机,是通过串行线用打印机键盘阅读和发送信息的东西,后来这东西被键盘与显示器取代...是的,这就是虚拟终端pty(pseudo-tty) 3>pts/ptmx(pts/ptmx结合使用,进而实现pty): pts(pseudo-terminal slave)是pty的实现方法,与ptmx...例如/dev/ptyp3和/dev/ttyp3(或者在设备文件系统中分别是/dev/pty /m3和 /dev/pty/s3)。它们与实际物理设备并不直接相关。...它仿真了类型为Linux的一种终端(TERM=Linux),并且有一些设备特殊文件与之相关联:tty0、tty1、tty2 等。当你在控制台上登录时,使用的是tty1。...5、虚拟终端(/dev/pts/n) 在Xwindows模式下(图形界面下)的伪终端.如我在Kubuntu下用konsole,就是用的虚拟终端,用tty命令可看到/dev/pts/1。

    2.9K80
    领券