Jeśli naprawdę masz zadanie na pierwszym planie, bash czeka na jego zakończenie, to mniej więcej definicja zadania na pierwszym planie . Jeśli bash nadal ma kontrolę nad terminalem, sprawdź, co się dzieje jobs -l
, np .:
$ 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 &
Zacząłem trzy tła ncat
procesy nasłuchiwania w . Możesz także zobaczyć „Gotowe” lub „Zatrzymane” dla statusu zadania.
Możesz efektywnie ustawić tło zadania pierwszego planu z innej powłoki, używając metody SIGSTOP / SIGCONT Stefana Seidela (chociaż faktyczny sygnał wysyłany przez powłokę z Ctrl- Zto SIGTSTP, oba sygnały powinny działać).
Istnieje subtelne rozróżnienie między procesami i zadaniami, gdy używane są terminy pierwszy plan i tło. Istnieje tylko jedno zadanie na pierwszym planie powłoki , może istnieć wiele procesów na pierwszym planie (jest to związane z identyfikatorami grup procesów terminalowych i można je zaobserwować po uruchomieniu dwóch lub więcej procesów w potoku).
Działające procesy lub potok pod kontrolą powłoki są nazywane „zadaniem”, gdy używasz polecenia bg
lub fg
, domyślnie odwołujesz się do ostatniego zadania - w moim przypadku tego z +
powyższym. Te zadania można również (między innymi) jawnie nazwać % 1% 2 lub% 3 (liczba w []
).
Niewykwalifikowane fg
polecenie wpłynie tylko na jedno zadanie, ostatnie, więc możesz się mylić, rozumiejąc obecną sytuację. Zadanie w tle może nadal zapisywać w terminalu:
echo foo > /dev/tcp/127.0.0.1/10111
Może to zależeć od tego, jak program obsługuje terminal, ncat
działa dobrze do pisania. Podczas czytania programy zatrzymają się, a zobaczysz komunikat „Zatrzymano”. Powłoka uruchomi procesy i zaczeka, aż wyjdą lub otrzymają sygnał SIGTTIN (jak na razie nohup
jest to obejście disown
).
Możesz ustawić tło określonego zatrzymanego zadania w tle
$ bg %3
(w moim przypadku otrzymam błąd bash: bg: job 3 already in background
)
W przeciwnym razie, jeśli proces jest na pierwszym planie, chyba że program złapie SIGTSTP i zrobi coś specjalnego, prawdopodobnie nie będzie miał problemów z szybkim Ctrl- Zi bg
. Pod tym względem nie ma nic specjalnego w programach sieciowych, połączenia przychodzące / dane będą buforowane przez jądro (do pewnego momentu). Połączenie strumieniowe może jednak mieć zauważalną pauzę.
Aby uzyskać więcej informacji, zobacz sekcję „ KONTROLA ZADAŃ ” na stronie podręcznika bash.