Kann mir jemand den Unterschied zwischen ctrl+ zund ctrl+ sagen c?
Wenn ich im Terminal bin, stoppen beide Kombinationen den aktuellen Vorgang, aber was genau ist der Unterschied zwischen beiden?
Kann mir jemand den Unterschied zwischen ctrl+ zund ctrl+ sagen c?
Wenn ich im Terminal bin, stoppen beide Kombinationen den aktuellen Vorgang, aber was genau ist der Unterschied zwischen beiden?
Antworten:
Wenn wir Randfälle beiseite lassen, ist der Unterschied einfach. Control+ Cbricht die Anwendung fast sofort ab, während Control+ Zsie im Hintergrund angehalten wird.
Die Shell sendet bei diesen Kombinationen verschiedene Signale an die zugrunde liegenden Anwendungen:
Control+ C(Steuerzeichen intr) sendet SIGINT, wodurch die Anwendung unterbrochen wird. In der Regel wird der Vorgang abgebrochen. Die Entscheidung liegt jedoch bei der Anwendung.
Control+ Z(Steuerzeichen susp) sendet SIGTSTP an eine Vordergrundanwendung und stellt es effektiv in den Hintergrund, angehalten. Dies ist nützlich, wenn Sie aus so etwas wie einem Editor ausbrechen müssen, um die benötigten Daten abzurufen. Sie können in die Anwendung zurückkehren, indem Sie ausführen fg(oder %xwo xist die Auftragsnummer, wie in gezeigt jobs).
Wir können dies testen, indem wir laufen nano TEST, dann Control+ drücken Zund dann laufen ps aux | grep TEST. Dies zeigt uns, dass der nanoProzess noch läuft:
oli 3278 0.0 0.0 14492 3160 pts/4 T 13:59 0:00 nano TEST
Weiter können wir sehen (von diesem T, das sich in der Statusspalte befindet), dass der Prozess gestoppt wurde . Es ist also noch am Leben, aber es läuft nicht ... Es kann fortgesetzt werden.
Einige Anwendungen stürzen ab, wenn sie über laufende externe Prozesse verfügen (z. B. eine Webanforderung), bei denen im Schlaf möglicherweise eine Zeitüberschreitung auftritt.
bg(anstatt fgzu deaktivieren), ohne sie wieder in den Vordergrund zu stellen. effektiv geben Sie die Kontrolle sowohl der Schale, die die Anwendung gestartet und die Anwendung selbst, als ob Sie verwendet hatte &beim Starten der Anwendung. Dies ist oft nützlich, wenn Sie vergessen haben, es mit &:) zu beginnen
fgerneut eingeben !
ctrl coder in den Vordergrund zurückkehren muss ctrl z? Es ist standardmäßig die SID (Bash)?
Control+ Zunterbricht einen Prozess ( SIGTSTP) und Control+ Cunterbricht einen Prozess ( SIGINT)
http://en.wikipedia.org/wiki/Control-Z
Auf Unix-ähnlichen Systemen ist Strg + Z die häufigste Standardtastaturzuordnung für die Tastenfolge, mit der ein Prozess angehalten wird
http://en.wikipedia.org/wiki/Control-C
In POSIX-Systemen bewirkt die Sequenz, dass das aktive Programm ein SIGINT-Signal empfängt. Wenn das Programm nicht angibt, wie mit dieser Bedingung umgegangen werden soll, wird es beendet. In der Regel wird sich ein Programm, das ein SIGINT verarbeitet, immer noch selbst oder zumindest die darin ausgeführte Task beenden
Ctrl+ Cwird verwendet, um einen Prozess mit einem Signal abzubrechen SIGINT, mit anderen Worten, es ist ein höflicher Abbruch .
Ctrl+ Z wird verwendet, um einen Prozess zu unterbrechen, indem es das Signal sendet SIGTSTP, das wie ein Schlafsignal aussieht, das rückgängig gemacht werden kann, und der Prozess kann wieder fortgesetzt werden.
Wenn ein Prozess angehalten wird, können wir ihn durch fg(im Vordergrund wieder aufnehmen) und bg(im Hintergrund wieder aufnehmen) wieder aufnehmen, aber ich kann einen angehaltenen Prozess nicht wieder aufnehmen, das ist ein Unterschied zwischen der Verwendung von Ctrl+ C& Ctrl+ Z.
Wie können wir angehaltene Prozesse anzeigen ?
Der jobsBefehl gibt eine Ausgabe wie folgt aus:
[1]- Stopped cat
[2]+ Stopped vi
Wie kann ich einen angehaltenen Prozess im Hintergrund beenden?
Mit dem killBefehl:
kill %nWo nist die Zahl, die der jobsBefehl anzeigt ? Also , wenn ich will Katze töten: kill %1.
Einfach gesagt:
CTRL-C fordert das Programm zum Abbruch auf .
CTRL-Z zwingt das Programm, anzuhalten und in den Hintergrund zu treten .
Auf diese Weise können Sie es später mit dem Befehl fortsetzen fg. Verbleibende Hintergrundaufgaben werden beendet, wenn Sie die Anmeldeshell beenden.
Dies sollte dazu beitragen ,
Ctrl+ Zdient zum Anhalten eines Prozesses durch Senden des Signals SIGSTOP, das vom Programm nicht abgefangen werden kann. While Ctrl+ Cwird verwendet, um einen Prozess mit dem Signal SIGINT abzubrechen, und kann von einem Programm abgefangen werden, damit es sich vor dem Beenden selbst bereinigen oder gar nicht beenden kann.
SIGTSTP, die vom Programm abgefangen werden können. Es gibt vier verschiedene Signale, die ein Programm aussetzen kann SIGSTOP, SIGTSTP, SIGTTIN, SIGTTOU. Davon SIGSTOPkönnen nur nicht gesperrt werden. Die anderen drei werden vom Terminal verwendet, um den Prozess unter verschiedenen Bedingungen zu stoppen.
Wenn Sie ctrl+ drücken c, bedeutet dies, dass Sie SIGINT an Ihren Prozess senden. wie Sie diesen Befehl eingeben: kill -SIGINT <your_pid>. Es wird Sie Ihren Prozess töten. Das ist der Grund, warum Sie es nicht sehen können, wenn Sie den Befehl ps absetzen.
Wenn Sie ctrl+ drücken z, bedeutet dies, dass Sie SIGSTOP an Ihren Prozess senden. wie Sie diesen Befehl eingeben: kill -SIGKSTOP <your_pid>. Es stoppt Ihren Prozess, aber der Prozess lebt noch. Sie können Ihren Prozess also erneut aktivieren, indem Sie SIGCONT an Ihren Prozess senden.