Чи потрібно вам миттєво повідомити всіх активних користувачів системи? Команда `wall` в Linux є набагато ефективнішою, ніж електронна пошта, і автоматично надсилає повідомлення всім, хто увійшов у систему. Вона транслює повідомлення кожному, хто використовує термінал в системі.
Команда для швидких повідомлень
Як швидко сповістити всіх користувачів, що зараз працюють в системі? Електронна пошта тут не підходить. Неможливо вгадати, коли саме ваше повідомлення буде прочитано. Якщо потрібна негайна реакція, то цей варіант не працює. Крім того, небажано захаращувати поштові скриньки користувачів, які не в мережі, повідомленнями, які їм не актуальні.
Без додаткових дій важко визначити, хто і звідки саме підключився до системи. Ваш сервер може фізично знаходитися в Абердіні, штат Вашингтон, але мати віддалених користувачів, підключених з Абердіна, Шотландія. Як же точно донести потрібну інформацію до всіх, хто зараз в системі?
Linux та інші Unix-подібні системи пропонують просте рішення. Команда `wall` діє як термінова телеграма. Вона доставляє повідомлення безпосередньо в термінали всіх користувачів, не даючи його пропустити. Вам не потрібно, щоб користувачі відкривали програми, перевіряючи наявність нових повідомлень.
Подача повідомлення пряма і не викликає сумнівів.
Як відправити повідомлення
У тестовій системі, яка використовувалась для написання цієї статті, була встановлена Fedora Linux, але команда `wall` працюватиме ідентично в інших дистрибутивах.
Єдина можлива відмінність полягає в тому, що деякі дистрибутиви Linux вимагають використання `sudo` для відправки повідомлення з текстового файлу, а інші – `sudo` для будь-якого використання `wall`. Це, скоріше, різниця між дистрибутивами, а не в самій роботі команди.
Щоб надіслати повідомлення всім користувачам, введіть `wall`, пробіл і сам текст повідомлення. В Fedora Linux потрібно використовувати `sudo`:
sudo wall Головний принтер не працює до подальшого повідомлення.
Ваше повідомлення буде надіслано всім користувачам, у яких відкрито термінал.
Локальні користувачі Ria і Tom отримують повідомлення, так само, як і віддалений користувач Dick, який працює на комп’ютері з Ubuntu.
Всі вони отримують повідомлення одночасно, і ви можете бути впевнені, що воно буде прочитане.
Надсилання повідомлення з файлу
Ви можете створити текстовий файл з повідомленням і використовувати його для відправлення. Якщо вам регулярно потрібно надсилати одні й ті ж повідомлення, створіть їх бібліотеку, щоб не вводити їх щоразу вручну.
Повідомлення у файлі `message.txt` було показано у терміналі за допомогою команди `cat`, щоб переконатися, що це саме те повідомлення, яке ми хочемо відправити.
Потім, повідомлення надсилається, передаючи ім’я текстового файлу команді `wall` як аргумент:
cat message.txt
sudo wall message.txt
Як і раніше, повідомлення отримують локальні користувачі Ria і Tom, а також віддалений користувач Dick.
Етикет використання
Оскільки команда `wall` доставляє повідомлення всім користувачам терміналу, ігноруючи все інше, таке повідомлення може бути нав’язливим. Використовуйте `wall` тільки тоді, коли це дійсно необхідно, інакше вона швидко почне дратувати користувачів.
Повідомлення `wall` накладається поверх всього, що відображається у терміналі користувача. Фактично, воно нічого не перезаписує, а просто накладається на текст, що може дезорієнтувати користувача.
Уявіть, що один з локальних користувачів редагує важливий файл у Vi, коли надходить повідомлення `wall`.
Повідомлення з’являється прямо посеред тексту файлу.
Все, що потрібно зробити користувачеві, щоб відновити правильний вигляд файлу – прокрутити його вверх та вниз.
Хоча легко повернути відображення до попереднього стану, часті переривання можуть роздратувати користувачів. Тому, хоч команда `wall` і зручна, використовуйте її обережно.
Що з користувачами графічного інтерфейсу?
Команда `wall` діє на всіх користувачів, які працюють у терміналі, але не зачіпає тих, хто використовує графічне середовище без відкритого вікна терміналу.
Якщо хтось працює в графічному режимі та має відкрите вікно терміналу, повідомлення буде відображено в цьому вікні, але на цьому все. Не розраховуйте на `wall`, якщо потрібно звернутися до користувачів за межами терміналу.
Повідомлення, відправлені командою `wall`, складно не помітити, особливо в традиційному термінальному середовищі.