Zatrzymane zadanie to takie, które zostało tymczasowo umieszczone w tle i nie jest już uruchomione, ale nadal korzysta z zasobów (tj. Pamięci systemowej). Ponieważ to zadanie nie jest dołączone do bieżącego terminala, nie może generować danych wyjściowych i nie otrzymuje danych wejściowych od użytkownika.
Możesz zobaczyć zadania uruchomione za pomocą jobs
wbudowanego polecenia w bash, prawdopodobnie także inne powłoki. Przykład:
user@mysystem:~$ jobs
[1] + Stopped python
user@mysystem:~$
Możesz wznowić zatrzymane zadanie za pomocą fg
wbudowanego polecenia bash (pierwszego planu). Jeśli masz wiele zatrzymanych poleceń, musisz określić, które z nich należy wznowić, podając numer wiersza zadania w wierszu polecenia fg
. Jeśli zatrzymany jest tylko jeden program, możesz użyć fg
samego:
user@mysystem:~$ fg 1
python
W tym momencie powróciłeś do interpretera języka Python i możesz wyjść, używając control-D.
I odwrotnie, możesz kill
użyć polecenia z jego specyfikacją zadania lub PID. Na przykład:
user@mysystem:~$ ps
PID TTY TIME CMD
16174 pts/3 00:00:00 bash
17781 pts/3 00:00:00 python
18276 pts/3 00:00:00 ps
user@mysystem:~$ kill 17781
[1]+ Killed python
user@mysystem:~$
Aby użyć specyfikacji zadania, poprzedź liczbę kluczem procentowym (%):
user@mysystem:~$ kill %1
[1]+ Terminated python
Jeśli wydasz polecenie wyjścia z zatrzymanymi zadaniami, zostanie wyświetlone ostrzeżenie. Zadania pozostaną uruchomione dla bezpieczeństwa. Ma to na celu upewnienie się, że próbujesz zabić zlecenia, o których mogłeś zapomnieć, że przestałeś. Przy drugim użyciu polecenia exit zadania zostają zakończone i powłoka zostaje zamknięta. Może to powodować problemy dla niektórych programów, które nie są przeznaczone do zabijania w ten sposób.
W bash wydaje się, że możesz użyć logout
polecenia, które zabije zatrzymane procesy i zakończy działanie. Może to powodować niepożądane wyniki.
Należy również pamiętać, że niektóre programy mogą nie wyjść po zakończeniu w ten sposób, a twój system może skończyć się wieloma osieroconymi procesami zużywającymi zasoby, jeśli nauczysz się tego robić.
Pamiętaj, że możesz utworzyć proces w tle, który zatrzyma się, jeśli będą wymagały danych wejściowych użytkownika:
user@mysystem:~$ python &
[1] 19028
user@mysystem:~$ jobs
[1]+ Stopped python
Możesz wznowić i zabić te zadania w taki sam sposób, jak te, które zostały zatrzymane z Ctrl-z
przerwaniem.