在 ubuntu 10.04 中,如果我在 /dev 下检查,有 50 多个 tty。tty0, tty1, tty2....
我知道 tty 是用于控制台输入/输出的字符设备。
但为什么有这么多呢?它是像游泳池的东西吗?
/dev/pts/0, 1, 2... , /dev/tty 之间有什么区别?
如果我打开一个终端,新号码会在 /dev/pts 下创建。但我不知道 /dev/tty 什么时候?用来。
即使我创建了 SSH 连接, /dev/tty 的数量也是相同的。
如果我这样做
cat /dev/tty0
Run Code Online (Sandbox Code Playgroud)
并在键盘上输入一些东西,我得到相应的输出。为什么会这样?
小智 27
ttys 不仅仅是输入/输出设备。它们还充当会话的控制终端的特殊工作,例如发送信号 (Ctrl+C)。/dev/ttyNN 是虚拟控制台,在监视器上全屏显示。
终端从 /dev/tty1 开始。通常,您可以通过按 Ctrl+Alt+Fn 键切换到这些控制台。
例如,Ctrl+Alt+F1 会将您带到第一个虚拟终端。现在,大多数 Linux 发行版都从 tty1 运行 X 服务器。因此,按 Ctrl+Alt+F1 可能没有效果。
$ ps ax | grep Xorg | grep -v grep
1504 tty1 Ss+ 44:57 /usr/bin/Xorg :0 -background none -verbose -auth /var/run/gdm/auth-for-gdm-rfsWyA/database -nolisten tcp vt1
Run Code Online (Sandbox Code Playgroud)
Ctrl+Alt+F2 将带您到第二个终端。通常发行版在虚拟终端上运行登录程序(agetty)。
$ ps ax | grep tty2 | grep -v grep
31865 tty2 Ss+ 0:00 /sbin/agetty tty2 38400
Run Code Online (Sandbox Code Playgroud)
登录程序为您提供登录提示,并让您使用用户名/密码登录。init 脚本决定了所有登录程序将在哪里运行。因此,根据您可能会或可能不会看到登录提示,例如 tty9。要返回您的 GUI 界面,请按 Ctrl+Alt+F1(如上面的示例输出)。
/dev/tty0 是一个特殊的设备,它指向当前终端。因此,无论您从何处(任何虚拟控制台)运行它,从 tty0 读取/写入的任何内容都会进入您当前的终端。
'ps ax' 中的第二列也给出了程序的控制终端。对于某些程序,例如守护程序,您可能会看到该列是“?”,这意味着它们未绑定到终端。
/dev/pts/0 等是伪终端设备,不附加到系统显示。例如,当您打开 gnome-terminal 或任何其他 GUI 终端时,您会得到终端。这些是基于客户端 - 服务器的方法,其中客户端将导出到程序,如 bash。程序发送到伪终端的数据被发送到“服务器”端(通常由另一个程序监控,如 gnome-terminal)。控制进程(服务器端)决定需要向终端发送什么,最终被客户端看到。这些设备可帮助您在系统上不受任何限制地打开多个“GUI 终端”,仍然提供相同的旧终端,如控件(ioctl()、颜色设置、发送信号 [Ctrl+C] 等)。
归档时间: |
|
查看次数: |
36363 次 |
最近记录: |