Иногда, через некоторое время после того, как я создал фон для процесса с помощью bg
bash, когда я нажимаю Enter в той же оболочке, чтобы снова отобразить приглашение (просто чтобы убедиться, что я все еще нахожусь в bash, когда отображается какой-то вывод из фонового процесса), кажется, что фоновый процесс останавливается самопроизвольно.
Если я делаю bg
снова, та же проблема повторяется.
Единственный способ исправить это , кажется fg
.
Почему это происходит?
terminal
io
job-control
background-process
Робин Грин
источник
источник
Ответы:
Обычно это происходит, если процесс пытается прочитать из своего
stdin
потока. Когда процесс находится в фоновом режиме, он получает сигнал TTIN и, таким образом, останавливается (то же самое, что и сигнал STOP). Существует также двойной сигнал TTOU, когда фоновый процесс пытается выполнить запись на свой терминал.Вывод его на передний план возобновляет процесс и позволяет ему читать с вашего терминала.
Демо-версия:
Одним из способов избежать этого является использование
nohup
, но это может иметь странные последствия, если программа не справляется с перенаправлением входного потока/dev/null
.источник