Вы можете использовать перенаправление дескриптора на копрок
#!/bin/bash
exec 3<&1
coproc mytee { tee log.out >&3; }
exec >&${mytee[1]} 2>&1
... your script ...
STDOUT и STDERR будут объединены в выводе скрипта. Было бы здорово, если бы кто-нибудь нашел способ объединить их в лог-файле, но разделить в выводе.
Это выглядит как широковещательная рассылка, отправленная кем-то, вошедшим в систему как пользователь root с помощью утилиты wall
. Вы можете использовать эту же команду для трансляции собственного сообщения. Например:
wall "Hello back"
Или
wall << EOF
hello back
EOF
Если вы просто хотите ответить одному пользователю, не транслируя сообщение всем в вашей системе, вы можете использоватьwrite
:
write root << EOF
hello back
EOF
Очевидно, тот факт, что это говорит от root@localhost.localdomain, подразумевает, что кто-то вошел в систему как root
. Если вы знаете, что никто, кроме вас, не должен входить в систему как root, тогдапримите меры , потому что это предполагает, что ваша машина была скомпрометирована.
Помимо опасений, что ваш хост может быть скомпрометирован, для трансляции сообщения всем пользователям или пользователям в определенной группе используйтеwall
wall -g root "Hi there"
# Will send to all users in the root group
wall "hello, world"
# Will send to all logged in users
Также касса mesg
и talk
.