Les messages diffusés n'apparaissent pas sur le terminal gnome, mais apparaissent sur xterm

Je suis curieux au sujet du comportement des messages diffusés par

$ sudo wall myfile 

le message de myfile apparaît sur tous les périphériques /dev/ttyN (ceux que je peux changer en appuyant sur Ctrl + Alt + fN ), il apparaît également sur les windows xterm j'ai ouvertes mais n'apparaît pas sur le gnome-terminal (en fait j'utilise Linux Mint avec MATE, donc c'est mate-terminal , mais c'est fourchette de gnome-terminal ).

Il y a aussi une note intéressante si tmux dans le xterm : je m'attendais à ce que le message apparaisse sur toutes les sessions du terminal qui s'exécutent dans tmux (sur toutes les windows et dans chaque volet de chaque window) position du slider dans la window xterm .

Si je vérifie le terminal de contrôle actuel en appelant tty , il signale différents terminaux pour différentes windows dans tmux: disons que j'ai /dev/pts/11 dans une window tmux et /dev/pts/12 dans un autre. Mais, le message de diffusion apparaît une seule fois pour chaque window xterm , pas pour chaque session de terminal ouverte dans tmux .

Il me semble que l'émulateur de terminal, lorsqu'il alloue un pseudo-terminal, a besoin de "l'save" quelque part pour le rendre capable de recevoir des messages diffusés, et donc, xterm fait, mais mate-terminal et tmux ne le font pas. Mais cela semble bizarre puisque le pseudo-terminal est alloué par le kernel, alors il devrait être "enregistré" automatiquement partout où il doit être.

Je serais heureux si quelqu'un explique comment cela fonctionne et pourquoi le comportement est-ce (apparemment bizarre).

Les terminaux listés indiquent que le comportement est vu avec Linux: Les indices sont dans la page de manuel pour le wall ( Solaris par exemple est différent):

wall affiche un message, ou le contenu d'un file, ou autrement son input standard, sur les terminaux de tous les users actuellement connectés .

Certaines sessions, comme wdm , qui ont au début de utmp (5) ut_type data un caractère ':' ne recevront pas le message du wall . Ceci est fait pour éviter les erreurs d'écriture.

Autrement dit, wall utilise datatables utmp, search les terminaux utilisés (c'est-à-dire les users connectés) et écrit sur le périphérique associé. Chaque ligne de la sortie de w montre un terminal (possible), enregistré par le terminal dans le file utmp. Par exemple, je suis ssh'd dans un server et l'écran en cours d'exécution alors que dans le même time, je me suis connecté à une console. Pour être complet, j'ai lancé xterm en utilisant l' -ls (login-shell). Voici la sortie de 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 

et l'exécution wall écritures wall sur chacun de ces appareils TTY .

Cependant, si le terminal n'écrit pas dans le file utmp, il ne sera pas listé – et le wall l'ignorera.

Maintenant, certains programmes peuvent avoir la fonctionnalité compilée, mais n'ont pas les privilèges nécessaires pour la modifier. C'est pourquoi certains programmes sont exécutés avec setgid pour le groupe "utmp". D'autres programmes (tels que xterm – ou gnome-terminal) peuvent utiliser un programme externe qui met à jour utmp en leur nom.

Avec gnome-terminal, la fonctionnalité a été déconseillée en raison de l'état d'esprit des développeurs gnome (a) que les users s'exécutent sur une machine locale, où gdm gère la connection, et (b) par conséquent il n'y a pas de distinction -login coquilles. Cela rend certains rapports de bugs intéressants:

  • [Résolu, déconseillé en amont] qui -m et w ne montrent pas les connections pty (Arch)
  • Bug 747046: nettoyer pty.c (Gnome)
  • Bug 159363: gnome-pty-helper ne nettoie pas les inputs utmp / wtmp des terminaux gnome lorsqu'il est tué (Red Hat)
  • Bug 71368: Résumé: L'option "update utmp / wtmp" de gnome-terminal ne fonctionne pas si vous n'utilisez pas gdm (Red Hat)

Sur urxvt , vous devez émettre

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

Ensuite, ça commence à fonctionner.

Je ne comprends pas pourquoi, juste copié (et testé) de http://permalink.gmane.org/gmane.comp.terminal-emulators.rxvt-unicode.general/1484 .