Я добавил несколько строк, которые будут выполняться в в масштабе всей системы /etc/bash.bashrc
такой как уведомление входа в систему по электронной почте, и т.д. Я заметил это на exit
который вызывает logout
, системы печатают те строки пользователям как:
USER@IP:~$ exit
logout
[1]+ Done cat /home/USER/a.txt | ssmtp EMAIL@gmail.com
Connection to IP closed.
Как я могу подавить это в своей системе?
[1]+ Done ...
часть Вашего вывода, кажется, прибывает из управления заданиями Bash. Вы обычно получаете его, когда команда, которую Вы запустили в фоне, завершается, как это:
$ sleep 1 &
[1] 20931
$
[1]+ Done sleep 1
Одно решение подавить эти выводы управления заданиями состоит в том, чтобы запустить фоновую команду в подоболочке путем включения его в круглые скобки:
$ ( sleep 1 &)
$
Я не могу сказать, является ли это соответствующим в Вашей ситуации, потому что Вы еще не показали свои фактические команды, и этот подход идет с несколькими недостатками:
Заданием нельзя больше управлять (например. jobs
, bg
, fg
команды), но когда это работает из сценария запуска, я предполагаю, что это не было бы предназначено так или иначе.
Если бы команда изменяла свою среду (например, устанавливала переменные или изменяла рабочий каталог), который только влиял бы на подоболочку затем и больше остальную часть сценария.
Иначе должен заставить оболочку забыть о задании после того, как это начало использовать disown
, как:
$ sleep 1 & disown
[1] 27248
$
Тот путь однако, это больше не будет также завершаться, когда оболочка выйдет, таким образом, это могло бы продолжать бежать мимо пользовательского выхода из системы, если бы я понял, это право (исправьте меня если не).
Источники и дополнительные материалы для чтения: