Ctrl+ Zzatrzymuje pracę, podczas gdy Ctrl+ Czabija pracę.
Dlaczego? Czy inny sposób nie miałby większego sensu?
z@z-lap:~$ sleep 100&
[1] 4458
z@z-lap:~$ sleep 200&
[2] 4459
z@z-lap:~$ jobs
[1]- Running sleep 100 &
[2]+ Running sleep 200 &
z@z-lap:~$ fg %1
sleep 100
^Z
[1]+ Stopped sleep 100
z@z-lap:~$ jobs
[1]+ Stopped sleep 100
[2]- Running sleep 200 &
z@z-lap:~$ fg %1
sleep 100
^C
z@z-lap:~$ jobs
[2]+ Running sleep 200 &
bash
shell
signals
job-control
neo0
źródło
źródło
Odpowiedzi:
Myślę, że możesz być zdezorientowany notacją kontroli pracy. Zwłaszcza „Zatrzymane” oznacza, że zadanie jest nadal aktywne, ale jego zdolność do przetwarzania czegokolwiek została wstrzymana (procesor nie ma czasu na przetwarzanie). Jest to w rzeczywistości stan „Pauza” lub „Zawieszony”, chociaż nie jest to prawidłowy termin techniczny.
CtrlCnie „zatrzymuje” zadania, anuluje je lub zabija. Technicznie powoduje to wysłanie do programu sygnału przerwania, nakazującego mu przerwanie tego, co robi i natychmiastowe wyjście. Niektóre programy usłyszą ten sygnał i wykonają samodzielnie prace awaryjnego czyszczenia przed wyjściem. Inni nie będą reagować na sygnał, a następnie zostaną po prostu przerwani.
CtrlZz drugiej strony „zatrzymuje” pracę. Ponownie odbywa się to za pomocą sygnału, ale tym razem jest to sygnał „stop” zamiast sygnału „przerwa”. To skutecznie wstrzymuje go i przywraca kontrolę nad powłoką, ale tak naprawdę nie zabija zadania. Jeśli chcesz, aby takie zadanie nadal działało, możesz następnie wydać
bg
polecenie wysłania ostatniego zatrzymanego zadania w tło. Następnie będzie działał jako zadanie w tle, tak jakbyś go najpierw uruchomił&
. Możesz także użyć,fg
aby wznowić ostatnio zatrzymane zadanie na pierwszym planie (pozwalając mu kontynuować od miejsca, w którym zostało przerwane, i pozwalając na ponowne interakcję z nim).źródło
CTRL+C=SIGINT
iCTRL+Z=SIGTSTP
.