После входа пользователя в систему и до GNU Screen

[root@15inch ~]# w
 11:45:17 up  3:44,  2 users,  load average: 0,00, 0,02, 0,00
USER     TTY        LOGIN@   IDLE   JCPU   PCPU WHAT
user  pts/2     09:42    7.00s  0.03s  0.03s -bash
[root@15inch ~]# who
user  pts/2        2018-08-31 09:42 (192.168.1.136)
[root@15inch ~]# 

но после запуска GNU Screen я ничего не увидел:

[root@15inch ~]# w
[root@15inch ~]# who
[root@15inch ~]#

только who --all то что-то показывает

# who --all
           system boot  Aug 31 08:01
LOGIN      tty1         Aug 31 08:01               548 id=tty1
           pts/2        Aug 31 09:42              3068 id=ts/2  term=0 exit=0

pts/2 - это псевдо TTY, который был создан после входа в систему через ssh . Но когда я пытаюсь отправить ему сообщение:

[root@15inch ~]# write user pts/2
write: user is not logged in on pts/2

только прямое использование pts/2 работает:

[root@15inch ~]# echo "HI" > /dev/pts/2 
[root@15inch ~]# 

это ожидаемое поведение? Почему GNU Screen скрывает этого пользователя от системных утилит?

1 ответ1

2

Это законная особенность, хотя я не знаю точно , оригинальные причины для этого. Я думаю, что Screen удаляет "внешний" tty из utmp, потому что он больше не актуален - пока вы "привязаны", для большинства намерений и целей вы не взаимодействуете с "внешним" tty.

Обычно это не вызывает проблем, потому что Screen должен добавлять записи utmp для каждого внутреннего pty (соответствующего каждому экранному окну). Вы должны увидеть записи с именами хостов, такими как " :S.0 " или " <originalhost>:S.0 " в выводе who -a .

Если этого не происходит, убедитесь, что окно помечено как "вошедшее в систему"; попробуйте Ctrl+A Shift+L, чтобы переключить состояние входа в систему. (Состояние по умолчанию устанавливается с помощью deflogin on в ~/.screenrc или общесистемном screenrc.)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .