Отправить сообщение другому пользователю на сервере в Unix/Linux

Материал из support.qbpro.ru

Так бывает, что на сервере работают и другие пользователи одновременно с вами. Допустим вам, необходимо выполнить перезагрузку ОС так,чтобы другие юзеры не пострадали и успели сохранить свои данные до ребута. Сейчас я расскажу как можно это сделать несколькими способами.

Для начала, посмотрим кто находится в системе:

w

Вывод:

18:07:26 up 38 days,  6:22,  2 users,  load average: 1.22, 1.24, 1.25
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
captain  pts/0    159.224.217.24   17:46    1.00s  0.45s  0.00s w
captain  pts/1    159.224.217.24   17:58    7:05   0.11s  0.11s bash -l

Так же, можно использовать:

who -u

Вывод:

aptain  pts/0        2017-11-18 17:46 00:05      143820 (159.224.217.24)
captain  pts/1        2017-11-18 17:58   .        145964 (159.224.217.24)

Для примера, я залогинился на сервер дважды от одного и того же юзера.

-=== СПОСОБ 1 — Используем echo команду ==- Можно отправить сообщение другому пользователю следующим образом:

# echo -e "\033[0;31m Can I reboot this server... OK? \033[0m" > /dev/pts/1

Где:

echo -e «\033[0;31m Can I reboot this server… OK? \033[0m» — Команда.
/dev/pts/1 — Это открытая сессия пользователя.
  • PS: Я использую в данном примере подсветку, чтобы можно было сразу ее увидеть и другому пользователю все было понятно.

-=== СПОСОБ 2 — Используем write команду ==- Так же, можно использовать следующий пример:

# write captain pts/1

Где:

captain — Юзер которому нужно отправить сообщение.
pts/1 — Сессия данного юзера.

Напишите сообщение и отправьте его через нажатие ‘Enter’, и оно будет отправлено в терминал юзера. Используйте Ctrl+D чтобы прервать утилиту write.

Можно написать сообщение в файл (предположим — send_to_user.txt):

# editor send_to_user.txt

И потом, чтобы отправить данное послание, используйте:

$ cat send_to_user.txt | write captain pts/1

Очень простая и полезная тулза.

-=== СПОСОБ 3 — Используем wall команду ==- Для отправки широковещательного сообщения всем подключенным пользователям, используется команда wall (wall = write to all):

$ wall
I will reboot this server at 02:00!

Но данное сообщение будет отправлено только после того, как вы нажмете — Ctrl+D

Можно написать сообщение в файл (предположим — send_to_user.txt):

# editor send_to_user.txt

И потом, чтобы отправить данное послание, используйте:

# cat send_to_user.txt | wall

Вот и все, статья «Отправить сообщение другому пользователю в Unix/Linux» завершена.