Название подводит итог. Запуск wall <<< "TEST"
показывает сообщение в любом TTY, но не в любом терминале с графическим интерфейсом (проверено с помощью gnome-terminal
и sakura
).
У меня есть несколько сценариев контроля батареи и температуры, которые основаны на wall
сообщении, и после недавнего обновления до 16.04 я заметил, что они перестали работать в GUI.
Я не могу определить, является ли это ошибкой или что-то мешает отображению сообщений в графическом интерфейсе.
Как мне поступить?
Дополнительная информация:
Запуск byobu
в графическом терминале позволяет видеть сообщения на стене
xmessage
,gxmessage
, илиnotify-send
)notify-send
работает только для коротких сообщений и только в графическом интерфейсе.wall
имеет удобное использование одной команды для всех терминалов вместо того, чтобы писать что-то для tty AND для gui AND для всех других сессий, которые могут быть на другихDISPLAY
s, так что это не очень хорошая альтернатива, по крайней мере, imhowho
раньше работали в терминале gnome, я бы показывал все ваши открытые вкладки, но больше не буду. Wall отправляет сообщения только тем терминальным сеансам, которые обновляют записи входа. Mate использует другой терминал по умолчанию. Я понял это давно, но на самом деле никогда не публиковал ответ. Сделаем это в какой-то момент на этой неделе.Ответы:
Из-за того, как работает gnome-терминал,
wall
не регистрирует его как терминал. Более подробное объяснение можно найти здесь . Я предполагаю, что то же самое верно для сакуры.Основываясь на ответе Станку Михая , я создал скрипт, который имитирует
wall
обычную работу, включая баннер с именем пользователя и отметкой времени (используйте -n или --nobanner для удаления баннера). В настоящее время скрипт не поддерживает чтение сообщения из файла.Вы можете заменить обычную
wall
команду этой, добавив псевдоним в~/.bashrc
:Пример использования:
источник
Да, это правда, что gnome-терминал не обновляет регистрационные записи, поэтому я пытаюсь найти другое решение:
Это поможет вам составить список всех сеансов рабочего стола терминала.
Еще один способ отправить сообщение на активные сеансы терминала рабочего стола
Это поможет вам перечислить все сеансы pty
После этого вы можете добавить в ваш ~ / .bashrc
alias wall="your_wall_replacement.sh"
Таким образом, вам не нужно удалять текущую стенуИзвините, если что-то не так, потому что кто-то не позволил мне сосредоточиться на этом вопросе ... если вы, ребята, заметили что-то странное, пожалуйста, оставьте комментарий.
10x
источник
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
Поскольку другие предполагают, что есть много методов, я поместил здесь более прямой (легкий) метод, который я нашел (принятие
echo "$MESSAGE_to_send" | sudo tee /dev/pts/$terminal_number:
обсуждено здесь.)Здесь
terminal-no
можно получить с другого терминала с помощью команды "tty"./dev/pts/12
источник