Was unterscheidet sich zwischen Strg+Z und Strg+C in der Unix-Befehlszeile?

Ich benutze Mac OS X Terminal. Und ich benutze Ctrl+Z oder Strg+C um einige Programme zu stoppen. Aber mir wurde klar, dass ich nicht weiß, was sie genau tun. Was sind Sie und was ist der Unterschied zwischen Ihnen?

Diese Frage war eine Super User Frage der Woche.
Lesen Sie den Marsch 13, 2011 blogeintrag für weitere Details oder senden Sie Ihre eigenen Frage der Woche.

Author: Toto, 2011-03-27

6 answers

Kontrolle+Z wird zum Aussetzen eines Prozesses verwendet, indem ihm das Signal SIGSTOP gesendet wird, das vom Programm nicht abgefangen werden kann. While Kontrolle+C wird verwendet, um einen Prozess mit dem Signal SIGINT zu beenden, und kann von einem Programm abgefangen werden, damit es sich vor dem Beenden selbst bereinigen oder gar nicht beenden kann.

Wenn Sie einen Prozess anhalten, wird dieser in der Shell angezeigt, um Ihnen mitzuteilen, dass er angehalten wurde:

[1]+  Stopped                 yes

Wenn du jedoch einen tötest, wird keine Bestätigung sehen, außer zu einer Shell-Eingabeaufforderung zurückgelassen zu werden. Wenn Sie einen Prozess aussetzen, können Sie auch ausgefallene Dinge damit tun. Zum Beispiel, dies ausführen:

fg

Mit einem Programm, das es zurück in den Vordergrund bringt.

Und den Befehl

bg

Mit einem suspendierten Programm kann es im Hintergrund ausgeführt werden (die Ausgabe des Programms wird jedoch weiterhin an den TTY gesendet).

Wenn Sie ein suspendiertes Programm beenden möchten, tun Sie dies nicht sie müssen es zuerst mit fg zurückbringen, Sie können einfach den Befehl ausführen:

kill %1

Wenn Sie mehrere suspendierte Befehle haben, führen Sie

jobs

Listet sie wie folgt auf:

[1]-  Stopped                 pianobar
[2]+  Stopped                 yes

Mit %#, wobei # die Auftragsnummer ist( die in eckigen Klammern aus der Ausgabe jobs) mit bg, fg, oder kill, kann verwendet werden, um die Aktion für diesen Job auszuführen.

 268
Author: Wuffers,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2011-03-27 01:15:51

Strg+Z unterbricht den Vorgang mit SIGTSTP, Sie können ihn später fortsetzen. Strg+C beendet den Prozess mit SIGINT, wodurch der Prozess beendet wird, es sei denn, er wird vom Ziel verarbeitet/ignoriert, sodass Sie ihn nicht fortsetzen können. Es gibt auch einen SIGSTOP, der von kill() gesendet werden kann und den der Prozess nicht abfangen kann. SIGCONT ist das Gegenstück zu SIGSTOP und SIGTSTP, das den Prozess unterbricht.

 24
Author: Ben Voigt,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2013-10-01 21:47:40

STRG+Z stoppt (pausiert) einen Job

STRG + C beendet einen Job

Mit STRG+C können Sie den Vorgang nicht fortsetzen, aber mit STRG + Z kann der Job wieder aufgenommen werden, indem Sie einfach den Befehl promt eingeben:

fg %1

Wenn Sie mehrere Prozesse angehalten haben, sollten Sie

jobs

Um die Ausgabe anzuzeigen und die entsprechende Zahl auszuwählen, um fortzufahren, z. B.

fg %3

Setzt den dritten Job in der Liste fort. Sie können auch Jobs im Hintergrund mit

bg %n

Wobei n ist Auftragsnummer.

 18
Author: g24l,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2011-03-27 11:52:36
Cntrl + Z pause the currently running process. 

Und

Cntrl + C simply terminates the running process.

Mit Cntrl + C können Sie den Vorgang nicht fortsetzen. wo wie mit Cntrl + Z können Sie den Prozess fortsetzen.

Verwenden Sie fg %1, um den Vorgang fortzusetzen.

 3
Author: Ravindra Miyani,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2014-07-03 14:39:27

STRG+Z stoppt (pausiert) einen Job

STRG+C beendet einen Job

Mit STRG+C Sie können den Vorgang nicht fortsetzen, jedoch mit STRG+Z Der Job kann wieder aufgenommen werden, indem Sie einfach an der Eingabeaufforderung eingeben:

Fg %1

Wenn Sie mehrere Prozesse angehalten haben, sollten Sie

Beschäftigung

Um die Ausgabe Zu sehen.

 3
Author: abul,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2014-07-03 16:52:31

Die vorherigen Antworten sind korrekt, aber aus irgendeinem unbekannten Grund unterbricht Strg-Z auch alle untergeordneten Prozesse, aber killall-SIGSTOP ... unterbricht nur den obersten (übergeordneten) Prozess und lässt die Kinder nach Belieben laufen.

 2
Author: Kostas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2013-02-26 17:19:22