El título lo resume. La ejecución wall <<< "TEST"
muestra el mensaje en cualquier TTY pero no en ningún terminal GUI (probado con gnome-terminal
y sakura
).
Tengo varios scripts de monitoreo de batería y temperatura que dependen wall
de un mensaje y después de una actualización reciente a 16.04, noté que dejaron de funcionar en la GUI.
No puedo determinar si esto es un error o algo impide que los mensajes se muestren en la GUI.
Cómo debo proceder ?
Información adicional:
Ejecutar byobu
en una terminal gui permite ver mensajes en el muro
xmessage
,gxmessage
onotify-send
)notify-send
funciona solo para mensajes cortos y solo en GUI.wall
tiene una buena conveniencia de usar un comando para todos los terminales, en lugar de escribir algo para tty AND para gui AND para todas las demás sesiones que pueden estar en otrosDISPLAY
s, por lo que esta no es una muy buena alternativa, al menos en mi opiniónwho
antes en la terminal gnome, mostraría todas tus pestañas abiertas, pero ya no. Wall envía mensajes solo a las sesiones de terminal que actualizan los registros de inicio de sesión. Mate usa una terminal diferente por defecto. Me di cuenta de esto hace mucho tiempo, pero nunca publiqué una respuesta. Lo hará en algún momento esta semana.Respuestas:
Debido a la forma en que funciona gnome-terminal,
wall
no lo registra como terminal. Una explicación más completa se puede encontrar aquí . Supongo que lo mismo es cierto para Sakura.Basado en la respuesta de Stancu Mihai , he creado un script que imita la forma en que
wall
generalmente funciona, incluido el banner con el nombre de usuario y la marca de tiempo (use -n o --nobanner para eliminar el banner). El script actualmente no admite leer el mensaje de un archivo.Puede reemplazar el
wall
comando normal con este agregando un alias en~/.bashrc
:Ejemplo de uso:
fuente
Sí, es cierto que gnome-terminal no actualiza los registros de inicio de sesión, por eso trato de encontrar otra solución:
Esto le ayuda a enumerar todas las sesiones de terminal de escritorio.
Otra forma de enviar un mensaje a sesiones activas de terminal de escritorio
Esto le ayuda a enumerar todas las sesiones pty
Después de eso, puede agregar a su ~ / .bashrc
alias wall="your_wall_replacement.sh"
De esta manera, no necesita eliminar el muro actualLo siento si algo no está bien, ya que alguien no me dejó concentrarme en este tema ... si ustedes notan algo extraño, por favor dejen un comentario.
10x
fuente
ps -ef | grep -e " tty" -e " pts/" | tr -s " " | cut -d " " -f 6 | sort -u | while read TTY; do echo "MESSAGE" | tee /dev/$TTY 1>/dev/null; done
Como otros sugieren que hay muchos métodos, pongo aquí un método más directo (fácil) que encontré (adopción de lo
echo "$MESSAGE_to_send" | sudo tee /dev/pts/$terminal_number:
discutido aquí).Aquí
terminal-no
podría obtenerse del otro terminal a través del comando "tty"./dev/pts/12
fuente