it-swarm.com.de

Strg c vs. Strg z mit Vordergrundjob

Ctrl+Z stoppt den Job während Ctrl+C tötet den Job.

Warum ist das so? Wäre der andere Weg nicht sinnvoller?

[email protected]:~$ sleep 100&
[1] 4458
[email protected]:~$ sleep 200&
[2] 4459
[email protected]:~$ jobs
[1]-  Running                 sleep 100 &
[2]+  Running                 sleep 200 &
[email protected]:~$ fg %1
sleep 100
^Z
[1]+  Stopped                 sleep 100
[email protected]:~$ jobs
[1]+  Stopped                 sleep 100
[2]-  Running                 sleep 200 &
[email protected]:~$ fg %1
sleep 100
^C
[email protected]:~$ jobs
[2]+  Running                 sleep 200 &
26
neo0

Ich denke, Sie sind möglicherweise verwirrt über die Jobkontrollnotation. Insbesondere bedeutet "Gestoppt", dass ein Job noch am Leben ist, seine Fähigkeit, etwas zu verarbeiten, jedoch beibehalten wurde (der CPU wird keine Zeit gegeben, etwas zu verarbeiten). Dies ist effektiv ein "Pause" - oder "Suspended" -Zustand, obwohl dies nicht der richtige Fachbegriff ist.

  • CtrlC "stoppt" einen Job nicht, er bricht ihn ab oder beendet ihn. Technisch gesehen wird ein Interrupt-Signal an das Programm gesendet, das es auffordert, abzubrechen und sofort zu beenden. Einige Programme hören dieses Signal und führen vor dem Beenden einige Notfall-Aufräumarbeiten an sich selbst durch. Andere reagieren nicht auf das Signal und werden anschließend einfach abgebrochen.

  • CtrlZAuf der anderen Seite "stoppt" ein Job. Dies geschieht wieder mit einem Signal, aber diesmal ist es ein "Stopp" anstelle eines "Interrupt" -Signals. Dies hält es effektiv in der Warteschleife und gibt die Kontrolle an die Shell zurück, beendet den Job jedoch nicht. Wenn Sie möchten, dass ein solcher Job weiter ausgeführt wird, können Sie einen Befehl bg ausgeben, um den zuletzt gestoppten Job in den Hintergrund zu senden. Es wird dann als Hintergrundjob weiter ausgeführt, als hätten Sie es zuerst mit & Ausgeführt. Sie können auch fg verwenden, um den zuletzt gestoppten Job im Vordergrund fortzusetzen (damit er dort fortgesetzt werden kann, wo er aufgehört hat, und Sie erneut mit ihm interagieren können).

55
Caleb