Linux -Kill -Signalzahlen

Linux -Kill -Signalzahlen
In diesem Tutorial wird erläutert, welche Linux -Kill -Signale sind und wie sie mit ihnen die Prozesse unterbrechen, beenden, aussetzen und fortsetzen können.

Was ist Linux -Kill -Signale?

Tötensignale ermöglichen die Interaktion zwischen verschiedenen Prozessen. Konkret Signale sind Ereignisbenachrichtigungen, die an Prozesse gesendet werden, um Prozesse zu unterbrechen, zu beenden, zu töten oder auszusetzen (deshalb verwenden wir den Begriff „Kill“). Signale können durch Prozesse oder vom Kernel gesendet werden. Normalerweise werden sie gesendet, wenn eine Anomalie oder eine außergewöhnliche Bedingung eine spezielle Verarbeitung erfordert oder wenn ein Benutzer einen Prozess manuell unterbricht oder beendet (e).G., Beim Drücken von Strg+C),

Wenn ein Signal an einen Prozess gesendet wird, kann dieses Signal oder eine Benachrichtigung eine Standardaktion als Antwort erfüllen oder von einem Signalhandler behandelt werden. Ein Signalhandler ist ein benutzerdefinierter Code des Programms, dessen Prozess das Signal erhalten hat, das das Verhalten des Prozesses bei Empfangssignal definiert (mit Ausnahme von Signalen Sigkill und Sigstop, die nicht gehandhabt, ignoriert oder blockiert werden können).

Wenn das Signal gesendet wird, sind die Standardaktionen, die möglicherweise stattfinden, Folgendes:

  • Begriff: Der Prozess wird beendet.
  • Ign: Das Signal wird ignoriert, ohne den Prozess zu beeinflussen.
  • Kern: Es wird eine Dump-Core-Datei erstellt.
  • Stoppen: Der Prozess wird gestoppt.
  • Fortsetzung: Der Prozess wird nach dem Stoppen fortgesetzt.

Abhängig vom Signal kann einige dieser Aktionen stattfinden, kann das Programm auch einen Signalhandler enthalten, um die richtige Aktion auszuführen.

Zusammenfassend: Signale sind Nachrichten, die an Prozesse übermittelt werden, in denen sie ein Ereignis aufgetreten sind.

Verfügbare Signale:

Um alle Signalnamen und Zahlen in Ihrem System aufzulisten, können Sie den Befehl Kill verwenden, gefolgt vom Flag -l, wie unten gezeigt.

Kill -l

Wie Sie sehen können, gibt es 64 Signale, die wahrscheinlich am bekanntesten von uns allen bekannt sind, die Nummer 9 (Sigkill).

  • Sigkill (9): Das Sigkill -Signal wird verwendet, um Prozesse sofort abzutöten oder zu beenden. Sigkill -Signale können nicht gehandhabt, ignoriert oder gestoppt werden.
  • Sigstop (19): Dieses Signal soll Prozesse anhalten oder innehalten, die später wieder aufgenommen werden können.
  • Sigcont (18): Das Sigcont -Signal wird verwendet, um gestoppte oder pausierte Prozesse wieder aufzunehmen.

So verwenden Sie Kill -Signale:

Die richtige Syntax zum Senden von Signalen ist:

töten <-SignalName>

oder

töten <-SignalNumber>

Sie können IR durch die Namen oder Zahlen ersetzen, die wir zuvor beim Ausführen des Kill -l -Befehls erhalten haben. Die PID ist die Prozess -ID, die Sie mit dem Befehl ps lernen können, wie in den folgenden Anweisungen gezeigt.

Um den praktischen Abschnitt dieses Tutorials zu beginnen.
Für das erste Beispiel habe ich ein wenig mit Code genannter LinuxHintsignal erstellt, der kontinuierlich druckt “LinuxHint.com”Wie im Screenshot unten gezeigt.

Um ein Signal an den Prozess zu senden, bevor ich seine PID lernen muss. Um die Prozess -ID (PID) zu sehen, müssen Sie die ausführen ps Befehl. In meinem Fall bin ich derjenige, der den Prozess ausgeführt hat, also benutze ich das ps Befehl gefolgt von dem -u Flagge, um meine Prozesse nur zu zeigen.

Notiz: Weitere Anweisungen zum PS -Befehl finden Sie mit dem PS -Befehl unter linux.

Wie Sie sehen können, ist die Stelle des Laufens LinuxHintsignal Das Skript ist 16182.

Der folgende Screenshot zeigt zwei Terminals; Das rechte Terminal zeigt die Abgabe des Sigstop -Signals zum Verarbeiten 16182. Das linke Anschluss zeigt, wie der Vorgang gestoppt wird, wenn ich das Signal sende.

Kill -sisigstop

Wie Sie am rechten Terminal sehen können, wurde der Prozess ordnungsgemäß gestoppt.

Sie müssen das SigCont -Signal senden, um die Prozessausführung wieder aufzunehmen, wie in den folgenden Screenshots gezeigt.

Kill -Sigcont

Wie Sie sehen können, wurde der Prozess wieder aufgenommen.

Sie können das gleiche Ergebnis erzielen, indem Sie die Signalnamen für ihre Zahlen ersetzen. Das folgende Beispiel wiederholt das vorherige Szenario, aber diesmal definiert es Signale nach ihren Zahlen.

Das folgende Beispiel zeigt auch, wie der Sigkill in den Prozess 17721 geliefert wird, um ihn zu pausieren. Anstatt den Signalnamen anzugeben, geben ich die von der zurückgegebene Signalnummer an, anstatt den Signalnamen anzugeben Kill -l Befehl in diesem Fall 19 für das Sigstop -Signal.

Töte -19

Der folgende Screenshot zeigt, wie Sie das SigCont -Signal angeben, und verwendet auch die Nummer anstelle des Namens.

Töte -18

Wie Sie sehen können, ist das Ergebnis gleich, wenn Sie den Signalnamen oder die Signalname verwenden.

Wie bereits erwähnt, wird das Sigkill -Signal verwendet, um einen Prozess vollständig zu beenden. Es ist wahrscheinlich das am häufigsten verwendete Signal von Benutzern.

Wie Sie im folgenden Beispiel sehen können, in dem Sigkill mit seiner Nummer (9) implementiert wird, wurde das Drehbuch vollständig beendet oder getötet.

Töte -9

Andere wichtige Signale:

  • Sigint: Dieses Signal wird geliefert, wenn der Benutzer die Prozessunterbrechung anfordert (e.G., Strg+C).
  • Igterm: Das Sigterm -Signal wird geliefert, um eine Prozessabschluss zu beantragen, jedoch nur, um zu fordern und nicht zu kündigen. Im Gegensatz zu Sigkill oder Sigstop kann dieses Signal behandelt, blockiert oder ignoriert werden.
  • SigilL: Dieses Signal wird verwendet, um Prozesse als Ursache für einen Fehler wie Betriebs- oder Ausführungsfehler zu beenden. Dieses Signal kann nicht ignoriert werden.
  • Sigchld: Wird verwendet, um übergeordnete Prozesse über Kinderprozesseereignisse zu benachrichtigen.
  • SEUFZEND: Dieses Signal wird ausgelöst, wenn die Verbindung abrupt unterbrochen wird.
  • Sigpipe: Dieses Signal wird an Prozesse gesendet, die versuchen, ohne ein Leseende in ein Rohr zu schreiben oder nicht gelesen werden kann.
  • Sigquit: Dieses Signal ähnelt SIGINT, erzeugt aber einen Kernmüllmittel.

Abschluss:

Unter Verwendung von Linux -Signalen zum Töten, Stoppen, Pause Prozessen unter anderem ist ein grundlegendes Wissen, das jeder Linux -Benutzer halten muss. Tiefe Kenntnisse über Signale sind besonders für Programmierer relevant, die sicherstellen müssen, dass Signalhandler keine unerwünschten Auswirkungen auf das System haben. Wie Sie sehen können, gibt es Dutzende verfügbarer Signale. Dieses Tutorial konzentrierte sich nur auf die häufigsten. Weitere Informationen zu Linux -Signalen finden Sie unter https: // www.Gnu.org/software/libc/manual/html_node/Standardsignale.html.

Vielen Dank für das Lesen von Linux -Tipps; Folgen Sie uns weiter, um weitere Linux -Tipps und Tutorials zu erhalten.