Если у вас действительно есть работа на переднем плане, то bash ждет ее завершения, это более или менее определение задачи на переднем плане . Если bash все еще контролирует терминал, проверьте, что происходит jobs -l
, например:
$ ncat -kl -p 10111 &
[1] 13404
$ ncat -kl -p 10222 &
[2] 13405
$ ncat -kl -p 10333 &
[3] 13406
$ jobs -l
[1] 13404 Running ncat -kl -p 10111 &
[2]- 13405 Running ncat -kl -p 10222 &
[3]+ 13406 Running ncat -kl -p 10333 &
Для этого я запустил три ncat
процесса прослушивания. Вы также можете увидеть «Готово» или «Остановлено» для статуса работы.
Вы можете эффективно справиться с заданием переднего плана из другой оболочки, используя метод SIGSTOP / SIGCONT Стефана Зайделя (хотя фактический сигнал, отправляемый оболочкой с Ctrl- Zэто SIGTSTP, любой сигнал должен работать).
Существует тонкое различие между процессами и заданиями, когда используются термины передний план и фон. Существует только одно задание переднего плана оболочки , может быть несколько процессов переднего плана (это связано с идентификаторами групп терминальных процессов и может наблюдаться при запуске двух или более процессов в конвейере).
Запущенные процессы или конвейер под управлением оболочки называются «заданием», когда при использовании команды bg
или fg
вы неявно ссылаетесь на самое последнее задание - в моем случае это то, что +
указано выше. Эти задания также можно (среди прочего) явно указывать как% 1% 2 или% 3 (число в []
).
Неквалифицированная fg
команда повлияет только на одну работу, самую последнюю, поэтому вы можете ошибаться в своем понимании текущей ситуации. Фоновое задание все еще может записывать в терминал:
echo foo > /dev/tcp/127.0.0.1/10111
Это может зависеть от того, как программа обрабатывает терминал, ncat
отлично работает для записи. Для чтения, хотя программы остановят выполнение, и вы увидите сообщение «Остановлено». Оболочка запустит процессы и будет ждать их выхода или получения сигнала SIGTTIN (это обходной nohup
путь, как есть disown
).
Вы можете создать фон для определенной остановленной работы с
$ bg %3
(в моем случае я получу ошибку bash: bg: job 3 already in background
)
В противном случае , если процесс находится на переднем плане, если программа не ловит SIGTSTP и делает что - то особенное, это вряд ли будет иметь проблемы с быстрым Ctrl- Zи bg
. В этом отношении нет ничего особенного в сетевых программах: входящие соединения / данные будут буферизироваться ядром (до определенного момента). Потоковое соединение может иметь заметную паузу, хотя.
Обратитесь к разделу « КОНТРОЛЬ ЗАДАНИЙ » на странице руководства bash для получения более подробной информации.