网页中有一句话描述tty驱动程序。
/proc/tty/drivers 文件显示所有当前注册的 tty 驱动程序。
以下是有关 w 和 /proc/tty/drivers 的一些信息。
debian8@hwy:~$ w
23:53:38 up 2 min, 1 user, load average: 0.47, 0.46, 0.20
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
debian8 :0 :0 23:51 ?xdm? 4.62s 0.05s /usr/bin/lxsess
debian8@hwy:~$ cat /proc/tty/drivers
/dev/tty /dev/tty 5 0 system:/dev/tty
/dev/console /dev/console 5 1 system:console
/dev/ptmx /dev/ptmx 5 2 system
/dev/vc/0 /dev/vc/0 4 0 system:vtmaster
serial /dev/ttyS 4 64-95 serial
pty_slave /dev/pts 136 0-1048575 pty:slave
pty_master /dev/ptm 128 0-1048575 pty:master
unknown /dev/tty 4 1-63 console
/proc/tty/drivers 中的哪一行反映了 w 命令?
答案1
据我所知,该w
实用程序读取utmp
数据库以显示其 TTY 信息。这是由 写入的,显然是通过使用称为(“管理非 init 客户端的 utmp/wtmp 条目”的 X11 实用程序)的东西wtmp
来写入的。xdm
sessreg
手册sessreg
说要放一行
sessreg -a -l $DISPLAY -x /etc/X11/xdm/Xservers $USER
在 X11Xstartup
脚本中。在我的 OpenBSD 机器上,该行实际上是 (in /etc/X11/xdm/Xstartup
)
exec /usr/X11R6/bin/sessreg -a -w /var/log/wtmp -u /var/run/utmp -x /etc/X11/xdm/Xservers -l $DISPLAY -h "" $USER
该-l
标志在手册中有如下描述sessreg
:
这描述了条目的“行”名称。对于终端会话,这是终端设备文件名的最终路径名段(例如
ttyd0
)。对于 X 会话,它可能应该是为用户会话指定的本地显示名称(例如:0
)。如果未指定,则终端名称将由ttyname(3)
前导组件确定并删除。
作为一个实验:
$ doas sessreg -a -l hello kk
(kk
是我,doas
是 OpenBSD 的“等价物” sudo
)
$ w
7:31PM up 10:55, 2 users, load averages: 1.20, 1.16, 1.10
USER TTY FROM LOGIN@ IDLE WHAT
kk p0 192.168.216.1 8:47AM 0 tmux: client (/tmp/tmux-1000/default)
kk he - 7:31PM 0 -
$ doas sessreg -d -l hello kk
$ w
7:32PM up 10:56, 1 user, load averages: 1.22, 1.17, 1.11
USER TTY FROM LOGIN@ IDLE WHAT
kk p0 192.168.216.1 8:47AM 0 tmux: client (/tmp/tmux-1000/default)
$ last | head -n 3
kk hello Wed Jan 11 19:31 - 19:31 (00:00)
kk ttyC0 Wed Jan 11 18:54 - 19:21 (00:27)
kk ttyp0 192.168.216.1 Wed Jan 11 08:47 still logged in
结论::0
只是sessreg
实用程序放在那里的文本字符串。它可以是任何东西,但很可能是 的值$DISPLAY
。