Byłem ciekawy i zdezorientowany, jakie dokładnie jest zachowanie CTRl + Z.
Wiem, że jeśli proces działa na pierwszym planie, a my naciskamy ctrl + z, przechodzi on w tło.
Ale co dokładnie się dzieje.
Czy nadal wykonuje swoją pracę, czy też zostaje zawieszony i zatrzymał się w punkcie, w którym był?
A jeśli w tym momencie zostanie zatrzymany i jakie jest znaczenie pracy w tle.
Odpowiedzi:
„Zadanie w tle” to takie, które nie wchodzi w interakcje z użytkownikiem - nie kontroluje tty i po prostu robi swoje (ogólnie po cichu). Zadanie na pierwszym planie jest odwrotne, kontroluje tty w celu interakcji z użytkownikiem.
Control-Z zawiesza najnowszy proces pierwszego planu (ostatni proces interakcji z tty) (chyba że proces ten podejmuje kroki w celu zignorowania zawieszenia, jak to zwykle robią powłoki). Zwykle spowoduje to powrót do powłoki, z której ogólnie można wprowadzić polecenie,
bg
aby przenieść właśnie zawieszony proces na tło (pozwalając mu dalej działać) lubfg
przenieść go z powrotem na pierwszy plan.źródło
fg
najpierw określ, które zadanie wystawia,jobs
a następnie powiedz, czy jego% 1 to problemfb %1
i proces zostanie wznowionyfg %1
niefb %1
Naciśnięcie Ctrl + Z wysyła
TSTP
sygnał do procesu. Zatrzymuje to wykonywanie (jądro nie planuje więcej czasu procesora na proces), a proces oczekuje CONT na kontynuację przetwarzania.Możesz to emulować / replikować za pomocą
kill -TSTP
ikill -CONT
(ponieważkill
wyśle nominowany sygnał do twojego procesu, pomimo nazwy!)Powłoka ma funkcję „tła” procesu, ale jest to związek między powłoką a procesem. Sam proces nie ma tak naprawdę pojęcia „tła” lub „pierwszego planu”.
Zobacz tutaj, aby uzyskać więcej informacji.
źródło
^Z
wysyła SIGTSTP, a nie SIGSTOPRozważ to polecenie, które zajmuje około. 4,5 sekundy na moim laptopie:
Po naciśnięciu Ctrl+ Zobliczenia zostaną zawieszone. Masz możliwość wznowienia obliczeń na pierwszym planie
fg
lub wznowienia go w tle za pomocąbg
. Ten ostatni jest mniej więcej równoważny z wykonaniem:źródło
Proces zostaje zawieszony i zatrzymany po naciśnięciu klawiszy Ctrl + Z. Za pomocą fg możesz przenieść zawieszone zadanie na pierwszy plan, za pomocą bg możesz uruchomić je w tle.
Więcej informacji można znaleźć na stronie http://linuxreviews.org/beginner/jobs/ .
źródło