Подавление выхода из системы передает человечность

Я добавил несколько строк, которые будут выполняться в в масштабе всей системы /etc/bash.bashrc такой как уведомление входа в систему по электронной почте, и т.д. Я заметил это на exit который вызывает logout, системы печатают те строки пользователям как:

USER@IP:~$ exit
logout
[1]+  Done                    cat /home/USER/a.txt | ssmtp EMAIL@gmail.com
Connection to IP closed.

Как я могу подавить это в своей системе?

2
задан 14 April 2018 в 23:24

1 ответ

[1]+ Done ... часть Вашего вывода, кажется, прибывает из управления заданиями Bash. Вы обычно получаете его, когда команда, которую Вы запустили в фоне, завершается, как это:

$ sleep 1 &
[1] 20931

$ 
[1]+  Done                    sleep 1

Одно решение подавить эти выводы управления заданиями состоит в том, чтобы запустить фоновую команду в подоболочке путем включения его в круглые скобки:

$ ( sleep 1 &)

$ 

Я не могу сказать, является ли это соответствующим в Вашей ситуации, потому что Вы еще не показали свои фактические команды, и этот подход идет с несколькими недостатками:

Заданием нельзя больше управлять (например. jobs, bg, fg команды), но когда это работает из сценария запуска, я предполагаю, что это не было бы предназначено так или иначе.
Если бы команда изменяла свою среду (например, устанавливала переменные или изменяла рабочий каталог), который только влиял бы на подоболочку затем и больше остальную часть сценария.


Иначе должен заставить оболочку забыть о задании после того, как это начало использовать disown, как:

$ sleep 1 & disown
[1] 27248

$ 

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


Источники и дополнительные материалы для чтения:

4
ответ дан 2 December 2019 в 02:13

Другие вопросы по тегам:

Похожие вопросы: