wall força todos a inserir algo para voltar ao prompt

0

Não consigo encontrar uma resposta para isso e pode ser porque não sei como formular a pergunta.

Estou usando wall para transmitir uma mensagem para abrir os terminais uma vez por dia. Quando isso acontecer, os avisos dos usuários do terminal desaparecerão até que eles pressionem ENTER. O comando wall é

wall -n wall message

E por falta de uma explicação melhor, aqui está o que parece no terminal dos usuários:

Como você pode ver, apenas trava. Pressionar ENTER ou fazer qualquer coisa me levará de volta a um prompt. Na verdade, mesmo que não pareça um prompt, é porque, em vez de pressionar ENTER, eu posso fazer um comando ou pressionar a seta para cima para ver os comandos anteriores, etc.

Não é crítico, apenas me incomoda. Eu considerei que talvez seja por design, para forçar os usuários a reconhecer que eles viram a mensagem, embora o fato de que apenas parece como não é um prompt parece que derrota esse propósito.

    
por felwithe 18.03.2018 / 03:21

1 resposta

0

O que você está experimentando é simplesmente uma consequência de como o console é compartilhado por processos em segundo plano: qualquer processo que esteja sendo executado com acesso ao seu console pode fazer a mesma coisa. Porque a saída está acontecendo de um processo diferente do shell, ele não sabe que o texto está lá! Se você estiver em um editor, também receberá este texto.

Para ver isso em um ambiente controlado, tente o seguinte:

$ (sleep 5; echo -e "\n\nWhere did this come from?") &
[1] 18898
$ ping localhost
PING localhost(localhost (::1)) 56 data bytes
64 bytes from localhost (::1): icmp_seq=1 ttl=64 time=0.039 ms
64 bytes from localhost (::1): icmp_seq=2 ttl=64 time=0.027 ms


Where did this come from?
64 bytes from localhost (::1): icmp_seq=3 ttl=64 time=0.028 ms
64 bytes from localhost (::1): icmp_seq=4 ttl=64 time=0.033 ms
64 bytes from localhost (::1): icmp_seq=5 ttl=64 time=0.028 ms
^C
--- localhost ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4099ms
rtt min/avg/max/mdev = 0.027/0.031/0.039/0.004 ms
[1]+  Done                    ( sleep 5; echo -e "\n\nWhere did this come from?" )
$

Obviamente, ping não imprimiu "De onde veio isso?"; veio do processo em segundo plano.

    
por 18.03.2018 / 03:45