Какая строка в / proc / tty / drivers отражает команду w?

На веб-странице есть предложение, описывающее драйверы tty.

зарегистрированные драйверы tty

В файле / proc / tty / drivers показаны все зарегистрированные в настоящее время драйверы tty.

Вот некоторая информация о драйверах w и / proc / tty /.

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?

0
11.01.2017, 18:02
1 ответ

Утилита w считывает базу данных utmp wtmp для отображения информации TTY, насколько мне известно. Это записано в xdm , очевидно, с помощью так называемого sessreg (утилита X11, которая «управляет записями utmp / wtmp для клиентов, не являющихся инициаторами»).

В руководстве sessreg говорится, что в скрипте X11 Xstartup следует поместить строку, подобную

sessreg -a -l $DISPLAY -x /etc/X11/xdm/Xservers $USER

. На моей машине OpenBSD строка фактически читает (в / 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 manual:

Здесь описывается "строковое" имя записи. Для сеансов терминала это последний сегмент пути в имени файла устройства терминала (например, 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 .

1
28.01.2020, 02:46

Теги

Похожие вопросы