У меня проблемы с пониманием моей ситуации, и Google пока не очень помог.
Я начал фоновую работу Bash:
ping google.com &
Сначала я получаю идентификатор процесса, затем Bash выводит стандартный вывод на экран.
user@host:~$ ping google.com &
[1] 14004
user@host:~$ PING google.com (173.194.44.66) 56(84) bytes of data.
64 bytes from ham02s14-in-f2.1e100.net (173.194.44.66): icmp_seq=1 ttl=54 time=26.3 ms
64 bytes from ham02s14-in-f2.1e100.net (173.194.44.66): icmp_seq=2 ttl=54 time=27.4 ms
64 bytes from ham02s14-in-f2.1e100.net (173.194.44.66): icmp_seq=3 ttl=54 time=29.2 ms
...
Это противоречит всему, что я сегодня читаю. У меня есть стандартная установка Debian Jessie под управлением GNU bash, версия 4.3.30 (1) -релиз (x86_64-pc-linux-gnu).
Кто-нибудь может мне это объяснить? Благодарю.
linux
bash
debian-jessie
Катя Айхельбергер
источник
источник
stdin
в этом случае?Будет ли выводиться вывод фонового процесса на терминале, зависит только от вас. Вы можете изменить поведение с помощью
stty
утилиты.пример
Значение по умолчанию позволяет фоновому процессу записывать в терминал:
Это поведение можно изменить с помощью
stty
команды:Если
tostop
указано, фоновый процесс останавливается при попытке записи в стандартный вывод. Если вы хотите, чтобы это продолжалось, вы можете вернуть его на передний план:Чтобы переключиться назад, бегите
stty -tostop
. После этого новым созданным фоновым заданиям будет разрешено записывать в стандартный вывод. (Существующие рабочие места не будут затронуты.)Документация
man stty
объясняетtostop
вариант следующим образом:Указанный
*
выше ведущий используется страницей руководства для определения этой опции как не POSIX.источник