Axe*_*ine 161 linux tty console
在 Linux 系统上,/dev/console,/dev/tty和之间有什么区别/dev/tty0?
它们各自的用途是什么,它们如何比较?
dch*_*kov 116
/dev/tty Current TTY device
/dev/console System console
/dev/tty0 Current virtual console
Run Code Online (Sandbox Code Playgroud)
在过去的美好时光/dev/console是系统管理员控制台。TTY 是用户连接到服务器的串行设备。
现在/dev/console和/dev/tty0代表当前的显示通常是一样的。例如,您可以通过添加console=ttyS0到grub.conf. 之后,您/dev/tty0是监视器,并且/dev/console是/dev/ttyS0.
一个练习示区别/dev/tty和/dev/tty0:
按Ctrl+ Alt+切换到第二个控制台F2。登录为root. 键入sleep 5; echo tty0 > /dev/tty0。按Enter并按Alt+切换到第三个控制台F3。现在按Alt+切换回第二个控制台F2。键入sleep 5; echo tty > /dev/tty,按Enter并切换到第三个控制台。
您可以看到这tty是进程启动的控制台,并且tty0始终是当前控制台。
jll*_*gre 69
/dev/console是一组虚拟设备,可以在启动时设置为参数。它可能会被重定向到串行设备或虚拟控制台,默认情况下指向/dev/tty0. 当多个console=选项传递给内核时,控制台输出将转到多个设备;
/dev/tty[0-N](N是最高的归属 TTY 编号,例如 63) 是您切换到的虚拟控制台之一control- alt-F1等等;
/dev/tty0 默认情况下也是虚拟控制台;
/dev/tty是与打开它的进程关联的控制台(物理、虚拟或伪设备,如果有)的别名。与其他设备不同,您不需要 root 权限来写入它。另请注意,由启动的cron进程和类似的批处理进程没有可用的/dev/tty,因为它们不与任何相关联。这些进程?在输出TTY列中有一个ps -ef。
sou*_*edi 31
https://github.com/torvalds/linux/blob/master/Documentation/admin-guide/serial-console.rst
在 Linux 上,可以使用console= 引导选项配置内核控制台。调用的内核代码printk()可能会向其写入消息,例如在加载设备或发生错误时。这些消息也由内核缓冲。(另见dmesg)。当找到并启动控制台设备时,它会接收所有先前缓冲的消息。
您可以console=多次传递以配置多个控制台,并且消息将写入所有控制台。显然,您只能为每种“类型”选择一个控制台:您不能同时使用console=ttyS0和console=ttyS1。
内核文档指定/dev/console为字符设备编号(5,1)。打开这个字符设备会打开“主”控制台,它是控制台列表中的最后一个 tty。第一个非内核进程,称为init“PID 1”,启动时/dev/console连接到标准输出、标准错误和标准输入。
如果没有一个控制台是 tty,则打开/dev/console返回错误ENODEV(“没有这样的设备”)。内核将打印记录一条消息,然后开始init。有关不是 tty 设备的内核控制台的示例,请参阅netconsole或我最喜欢的控制台行式打印机。
您还可以通过阅读 .tty 控制台查看 tty 控制台列表/sys/class/tty/console/active。 systemd 文档指出显示的第一个设备是主控制台。该列表实际上与内核命令行的顺序相反。的当前内核文档错误地指出,示出的最后一个设备是主或“活性”控制台。出于某种原因,可以轮询此文件以进行更改(以防控制台设备被删除?)。
在systemd-nspawn容器内,标准/dev/console文件被替换为伪终端设备 (PTY)。这些最好被描述为虚拟终端设备。它们是动态创建的,也用于实现像 GNOME 终端这样的图形终端模拟器,以及像ssh.
在Linux TTY设备节点 tty1通过tty63有虚拟终端。它们也称为 VT,或称为虚拟控制台。它们在物理控制台设备驱动程序之上模拟多个控制台。一次只显示和控制一个虚拟控制台。可以切换活动终端,例如使用chvt或 Ctrl+Alt+F1 通过您拥有的许多功能键。
您还可以使用 读取和写入当前 VT /dev/tty0。 tty0是通常的内核控制台,例如,如果您没有明确选择一个。“系统首先寻找 VGA 卡 [这是 VT 运行的地方],然后寻找串行端口”。您还可以将控制台设置为特定的 VT,例如console=tty1.
“如果你的系统中没有VGA卡,第一个串口将自动成为控制台。” “串行控制台”之类ttyS0的可能是tty0. 不能在串行控制台之上使用 VT 系统。
/dev/tty是 POSIX 指定的三个标准设备文件/dev/之一(是POSIX 指定的三个目录名之一)。打开它相当于打开当前进程的控制终端。控制终端是在进程首次打开终端时设置的,至少在 Linux 上是这样。例如,在 中init,它会引用/dev/console。
从控制终端分离是传统上启动后台进程所需的步骤之一,例如系统日志守护进程。成为后台进程的步骤极其复杂,但具体来说,与控制终端分离的步骤是setsid系统调用。在更现代的系统中,init 系统(例如 systemd)首先在没有任何控制终端的情况下启动服务。
| 归档时间: |
|
| 查看次数: |
170920 次 |
| 最近记录: |