Якщо у вас справді є робота на передньому плані, тоді 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 man.