Os terminais listados indicam que o comportamento é visto no Linux: As dicas estão na página de manual para wall
( Solaris , por exemplo é diferente):
wall
displays a message, or the contents of a file, or otherwise its standard input, on the terminals of all currently logged in users.Some sessions, such as
wdm
, that have in the beginning of utmp(5)ut_type
data a ':' character will not get the message fromwall
. This is done to avoid write errors.
Ou seja, wall
usa os dados de utmp, procura terminais em uso (ou seja, usuários que efetuaram login) e grava no dispositivo associado. Cada linha na saída de w
mostra um terminal (possível), gravado pelo terminal no arquivo utmp. Por exemplo, eu sou ssh'd em um servidor e tela de execução, enquanto ao mesmo tempo eu entrei em um console. Apenas por completo, executei o xterm usando a opção -ls
(login-shell). Aqui está a saída 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 -c w
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
e a execução de wall
grava em cada um desses TTY
dispositivos.
No entanto, se o terminal não gravar no arquivo utmp, ele não será listado - e wall
irá ignorá-lo.
Agora, alguns programas podem ter o recurso compilado, mas falta privilégios para alterá-lo. É por isso que alguns programas são executados com setgid
para o grupo "utmp". Outros programas (como o xterm - ou o gnome-terminal) podem usar um programa externo que atualiza o utmp em seu nome.
Com o gnome-terminal, o recurso foi preterido devido à mentalidade dos desenvolvedores do gnome que (a) os usuários executam em uma máquina local, onde gdm
manipula o login e (b) conseqüentemente, não há distinção que valha a pena incomodar entre shells de login e shells de não-login. Isso cria alguns relatos de bugs interessantes:
- [Resolvidos, reprovados no upstream] who -m e w não mostram logins pty (Arch)
- Bug 747046: cleanty pty.c (Gnome)
- Bug 159363: o gnome-pty-helper não limpa as entradas utmp / wtmp dos terminais gnome quando matou (Red Hat)
- Bug 71368: Resumo: a opção "update utmp / wtmp" do gnome-terminal não funciona quando não está usando o gdm (Red Hat)