- write(1) — Linux man page
- See Also
- History
- Availability
- How to Send Broadcast Message to Logged-in Users on Linux Terminals
- Send Messages to Logged-in Users Using the Wall Command
- Send Messages to a Specific Logged-in User
- Команда write в Linux
- Синтаксис
- Использование команды write в Linux
- Предварительная подготовка
- Разрешение на запись
- Вход в терминальный сеанс
- Создание сообщения
- Сообщение с помощью команды echo
- Сообщение из файла
- Сообщение на определённый терминал
- Заключение
- How to Send a Message to Logged Users in Linux Terminal
write(1) — Linux man page
When you run the write command, the user you are writing to gets a message of the form:
Any further lines you enter will be copied to the specified user’s terminal. If the other user wants to reply, they must run write as well.
When you are done, type an end-of-file or interrupt character. The other user will see the message EOF indicating that the conversation is over.
You can prevent people (other than the super-user) from writing to you with the mesg(1) command. Some commands, for example nroff(1) and pr(1), may disallow writing automatically, so that your output isn’t overwritten.
If the user you want to write to is logged in on more than one terminal, you can specify which terminal to write to by specifying the terminal name as the second operand to the write command. Alternatively, you can let write select one of the terminals — it will pick the one with the shortest idle time. This is so that if the user is logged in at work and also dialed up from home, the message will go to the right place.
The traditional protocol for writing to someone is that the string ‘-o’, either at the end of a line or on a line by itself, means that it’s the other person’s turn to talk. The string ‘oo’ means that the person believes the conversation to be over.
See Also
History
Availability
The write command is part of the util-linux-ng package and is available from ftp://ftp.kernel.org/pub/linux/utils/util-linux-ng/.
How to Send Broadcast Message to Logged-in Users on Linux Terminals
Linux is a multi-user operating system that allows multiple users to log in and use the system. This implies that at any given time, you might have several users logged in.
Sometimes, you might need to send a message or notification to all the users without necessarily placing a phone call or sending them emails. This is mostly when you want to announce a maintenance task or instruct them to log out.
In this guide, we will demonstrate how you can send messages to all logged-in users in the system. This only applies to users who are logged in via a terminal window using an SSH client such as PuTTY.
Send Messages to Logged-in Users Using the Wall Command
The wall command is a command-line utility that displays messages to all logged-in users on the terminal.
The wall command takes the following basic syntax:
If no file is specified, then the wall command reads the message from standard input and broadcasts it to all logged-in users.
For example, the following command reads the message enclosed in quotation marks as the argument and sends it to all logged-in users
# wall "The system will be shutting down at 1500HRS for maintenance. Apologies for any inconvenience caused".
When viewed from a logged-in user (in this case bob), the message appears as shown on the terminal window.
To display a message from a file, invoke the wall command followed by the file name as shown.
This is how the user receives the message on the terminal.
Send Messages to a Specific Logged-in User
Alternatively, you can use the write command to send a message to a specific user. To list all the currently logged-in users, invoke the who command:
For example, to send a message to a user called winnie and notify her about a system restarting in the next 3 hours, run the following write command with the echo command.
$ echo "This system will be restarted in 3 hours" | write winnie
On the user’s terminal, the message will appear as shown.
Conclusion
We have covered various ways of sending a message or notification to logged-in users using the wall and write commands. We hope that you can now send messages to logged-in users without a problem.
Команда write в Linux
В Linux команда write создаёт линию связи между двумя авторизованными пользователями через терминал, позволяя отправлять сообщения в режиме реального времени.
Синтаксис
Параметр user является обязательным и представляет имя пользователя принимающей стороны. Указание ttyname необходимо в случае нескольких открытых терминалов.
Использование команды write в Linux
Предварительная подготовка
Для команды write требуются как минимум два пользователя, вошедших в систему через сеанс pts (псевдо-терминал) или tty (телетайп).
Так как у меня второго пользователя нет, то я его создаю с именем ivan :
oleg@mobile:~$ sudo su root@mobile:/home/oleg# adduser ivan Добавляется пользователь «ivan» . Добавляется новая группа «ivan» (1001) . Добавляется новый пользователь «ivan» (1001) в группу «ivan» . Создаётся домашний каталог «/home/ivan» . Копирование файлов из «/etc/skel» . Новый пароль : Повторите ввод нового пароля : passwd: пароль успешно обновлён Изменение информации о пользователе ivan Введите новое значение или нажмите ENTER для выбора значения по умолчанию Полное имя []: Номер комнаты []: Рабочий телефон []: Домашний телефон []: Другое []: Данная информация корректна? [Y/n] y root@mobile:/home/oleg#
Добавляю пользователя ivan в группу sudo:
root@mobile:/home/oleg# usermod -aG sudo ivan root@mobile:/home/oleg#
Проверяю доступность разрешений sudo , переключившись командой su на учётную запись пользователя ivan :
oleg@mobile:~$ sudo su ivan ivan@mobile:/home/oleg$ cd ivan@mobile:~$
Теперь пользователь ivan , используя sudo , сможет запускать команды с привилегиями суперпользователя:
ivan@mobile:~$ sudo ls -l /root итого 4 drwxr-xr-x 3 root root 4096 авг 17 2021 snap ivan@mobile:~$
Конечно при работе в реальной многопользовательской среде подобная предварительная подготовка не требуется.
Разрешение на запись
Для связи с другим пользователем oleg получает разрешение на запись с помощью mesg y :
oleg@mobile:~$ mesg y oleg@mobile:~$
Пользователь ivan также получает разрешение на запись:
ivan@mobile:~$ mesg y ivan@mobile:~$
Вход в терминальный сеанс
При работе на одном компьютере с двумя разными пользователями каждый пользователь запускает команду в своём терминальном сеансе и указывает своё имя пользователя.
Команда предлагает ввести sudo и пароль пользователя для продолжения.
Пользователь oleg входит в терминальный сеанс:
oleg@mobile:~$ sudo login oleg Пароль: Welcome to Ubuntu 20.04.6 LTS (GNU/Linux 5.15.0-58-generic x86_64) . oleg@mobile:~$
То же самое выполняет и пользователь ivan :
ivan@mobile:~$ sudo login ivan Пароль: . ivan@mobile:~$
Чтобы проверить, кто вошёл в систему, используется команда w в любом терминале:
oleg@mobile:~$ w 17:51:14 up 14 min, 3 users, load average: 0,28, 0,39, 0,50 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT oleg :0 :0 17:38 ?xdm? 1:33 0.00s /usr/lib/gdm3/gdm-x-session --run-script env GNOME_SHELL_SESSION_M oleg pts/0 - 17:47 1.00s 0.12s 0.00s w ivan pts/2 - 17:49 2:05 0.14s 0.05s -bash oleg@mobile:~$
Вывод показывает, что пользователи oleg и ivan вошли в систему через консоль pts . Кроме этого пользователь oleg предварительно вошёл в систему через локальный дисплей (GUI). Он же выполнил команду login для обоих пользователей.
Создание сообщения
Чтобы написать сообщение другому пользователю с помощью команды write выполняются следующие действия:
Запускаем утилиту и указываем пользователя:
Команда ожидает входное сообщение. На принимающей стороне пользователь получает подтверждение о соединении со следующей информацией:
ivan@mobile:~$ Message from oleg@mobile on pts/0 at 17:56 .
Пользователь oleg набирает текст сообщения и нажимает Enter для перехода на новую строку:
oleg@mobile:~$ Message from oleg@mobile on pts/0 at 18:03 . write oleg Hi, how are you? write ivan Would you like to drink some beer now?
Сообщение появляется на принимающей стороне в режиме реального времени и пользователь ivan отвечает:
ivan@mobile:~$ Message from oleg@mobile on pts/0 at 18:03 . write oleg Hi, how are you? write ivan Would you like to drink some beer? write oleg Yes, of course. o
Пользователь oleg завершает работу, набрав oo и нажав CTRL + D:
oleg@mobile:~$ write ivan Message from ivan@mobile on pts/2 at 18:03 . Hi, how are you? write ivan Would you like to drink some beer now? write oleg Yes, of course. o write oo oleg@mobile:~$
Пользователь ivan получает сообщение об окончании сеанса и бежит к Олегу:
ivan@mobile:~$ EOF Message from oleg@mobile on pts/0 at 18:03 . write oleg Hi, how are you? write ivan Would you like to drink some beer now? write oleg Yes, of course. o write oo EOF
Поскольку не существует надлежащего способа отличить, когда пользователь заканчивает сообщение, традиционный способ завершения оператора — это символ o . Чтобы сигнализировать об окончании разговора, напишите oo . Завершите работу, нажатием CTRL + D.
Сообщение с помощью команды echo
С использованием команды echo можно ввести сообщение и передать команду write :
oleg@mobile:~$ echo "Hello from oleg" | write ivan
Канал связи немедленно заканчивается для отправителя, а получатель принимает сообщение и ожидает завершения.
Сообщение из файла
Для отправки сообщения из текстового файла создаётся текстовый файл:
Содержимое файла отправляется с помощью команды следующим образом:
oleg@mobile:~$ echo "Hello from oleg" | write ivan < beer.txt
Сообщение на определённый терминал
Когда у пользователя открыто несколько терминальных сеансов, утилита выбирает терминал с наименьшим временем простоя.
Используйте эту утилиту для проверки имени tty и времени простоя.
Чтобы указать, на какой tty отправлять сообщения, запустите:
ivan@mobile:~$ write oleg pts/0
Сообщения поступят только на pts/0 .
Заключение
Изучив в этой небольшой статье примеры использования команду write в Linux вы сможете использовать её в своей работе. Вы уже убедились в том, что это несложно.
How to Send a Message to Logged Users in Linux Terminal
How can I send a messages to logged on users in a Linux server? If you are asking this question, then this guide will help you learn how to do that. We will demonstrate how to send a message to all or a specific logged on user, on the terminal in Linux.
Linux offers a variety of means for sending messages to users logged on to a server as explained in the two methods below.
In the first method, we will use wall command – write a message to all currently logged in users on the terminal as shown.
# wall "System will go down for 2 hours maintenance at 13:00 PM"
To disable the normal banner printed by wall, for example:
Broadcast message from [email protected] (pts/2) (Sat Dec 9 13:27:24 2017):
Add the -n (Suppress the banner) flag, this however, can only be used by the root user.
# wall -n "System will go down for 2 hours maintenance at 13:00 PM"
In the second method, we will use write command, which comes pre-installed on all if not most Linux distributions. It allows you to send a message to another user in the terminal using tty.
First check the all logged on users with the who command as shown.
There are currently two users are active on the system (tecmint and root), now the user aaronkilik is sending a message to the root user.
$ write root pts/2 #press Ctrl+D after typing the message.
That’s all! Do share with us other methods or commands for sending messages to all logged on users through the terminal in Linux. If you have any queries, please use the feedback form below.