Сообщения широковещания не отображаются на gnome-terminal, но отображаются на xterm

Мне интересно о поведении широковещательных сообщений

$ sudo wall myfile 

сообщение из myfile появляется на всех устройствах /dev/ttyN (те, к которым я могу переключиться, нажав Ctrl + Alt + fN ), он также появляется в окнах xterm я открыл, но он не отображается на gnome-terminal (на самом деле я использую Linux Mint с MATE, так что это mate-terminal , но это fork gnome-terminal ).

Также интересно отметить, что если я запускаю tmux в xterm : я ожидал, что сообщение появится во всех сеансах терминала, которые запущены в tmux (во всех окнах и в каждой панели каждого окна), но на самом деле сообщение появляется только при текущих курсора в окне xterm .

Если я проверю текущий управляющий терминал, вызвав tty , он сообщит о разных терминалах для разных окон в tmux: скажем, у меня есть /dev/pts/11 в одном окне tmux и /dev/pts/12 в другом. Но широковещательное сообщение появляется только один раз для каждого окна xterm , а не для каждого сеанса терминала, открытого в tmux .

Мне кажется, что эмулятор терминала при распределении псевдотерминала нуждается, например, «регистрировать» его где-то, чтобы он мог принимать широковещательные сообщения, и поэтому xterm делает это, но mate-terminal и tmux этого не делают. Но это звучит странно, поскольку псевдотерминал выделяется ядром, поэтому он должен быть «зарегистрирован» автоматически везде, где он должен быть.

Я был бы рад, если бы кто-нибудь объяснил, как это работает и почему это поведение (казалось бы, странно).

    2 Solutions collect form web for “Сообщения широковещания не отображаются на gnome-terminal, но отображаются на xterm”

    В терминалах перечислены намеки на то, что поведение наблюдается с Linux: подсказки приведены на странице руководства для wall (например, Solaris отличается):

    wall отображается сообщение или содержимое файла или его стандартный ввод на терминалах всех зарегистрированных пользователей .

    Некоторые сеансы, такие как wdm , которые имеют в начале utmp (5) данные ut_type символ ':' не будут получать сообщение от wall . Это делается для того, чтобы избежать ошибок при записи.

    То есть wall использует данные utmp, ищет используемые терминалы (т. Е. Вошедшие в систему пользователи) и записывает на соответствующее устройство . Каждая строка на выходе w показывает (возможный) терминал, записанный терминалом в файле utmp. Например, я нахожусь на сервере и запускаю экран, в то же время я вошел в консоль. Просто для полноты я запускал xterm с помощью опции -ls (login-shell). Вот вывод w :

     $ w 19:53:15 up 4:08, 5 users, load average: 0.00, 0.01, 0.05 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT tom tty2 19:48 5:11 0.04s 0.02s -tcsh tom pts/0 michener:S.0 15:51 13:18 0.35s 0.24s ssh -X thomas@b tom pts/2 michener:S.1 16:34 2.00s 0.14s 0.00s sh -cw tom pts/4 michener:S.3 15:52 3:59m 0.12s 0.00s /bin/sh /users/ tom pts/3 localhost:10.0 19:53 7.00s 0.03s 0.03s -tcsh 

    и беговая wall записывает на каждое из этих устройств TTY .

    Однако, если терминал не пишет в файл utmp, он не будет указан – и wall игнорирует его.

    Теперь у некоторых программ может быть встроенная функция, но у нее нет привилегий для ее изменения. Вот почему некоторые программы запускаются с setgid в группу «utmp». Другие программы (такие как xterm – или gnome-terminal) могут использовать внешнюю программу, которая обновляет utmp от их имени.

    С gnome-терминалом функция устарела из-за мышления разработчиков гномов, которые (а) используют пользователей на локальном компьютере, где gdm обрабатывает логин, и (b) следовательно, нет различия, которое стоит беспокоиться между командами входа и -лоиновые оболочки. Это приводит к некоторым интересным сообщениям об ошибках:

    • [Решенный, устаревший вверх], кто -m и w не показывают pty logins (Arch)
    • Ошибка 747046: очистка pty.c (Gnome)
    • Ошибка 159363: gnome-pty-helper не очищает записи utmp / wtmp gnome-терминалов при уничтожении (Red Hat)
    • Ошибка 71368: Сводка: опция gnome-terminal «update utmp / wtmp» не работает, когда не используется gdm (Red Hat)

    На urxvt вы должны выпустить

     chown root.utmp /usr/bin/urxvt chmod g+s /usr/bin/urxvt 

    Затем он начинает работать.

    Я не понимаю, почему, просто скопирован (и протестирован) из http://permalink.gmane.org/gmane.comp.terminal-emulators.rxvt-unicode.general/1484 .

    Interesting Posts

    Запуск сеанса VNC на новом дисплее X

    Есть ли страница руководства для цветного вывода оболочки?

    Как модули ядра Linux становятся доступными в пакете ядра Linux-дистрибутива?

    Не удается войти в систему другим пользователям в системе Debian

    Как получить pid процесса в фоновом режиме?

    Постоянная переменная среды для всех пользователей

    Поддерживаются ли форматы RAID в дистрибутивах?

    sed, разделяя переменную (предоставляющую число) из инструкции для вставки текста по определенной строке

    Как понять вывод из «ssh -O check» в сценариях bash?

    Запуск xterm удаленно с помощью ssh -Y, не соответствует настройке раскраски, установленной в .Xresources

    SSH дважды и запустить команду, экранируя символ?

    Что означают «функции, включенные» в GNU?

    Получение липкого фонового терминала, работающего на рабочем пространстве bspwm в полноэкранном режиме

    Почему терминал чувствителен к регистру?

    Попытка обнаружения приемлемых базовых DN DN для LDAP для разных серверов каталогов в сценарии bash

    Linux и Unix - лучшая ОС в мире.