Befehl Bash Trap

Befehl Bash Trap
Ein integrierter Bash-Befehl, mit dem ein Befehl ausgeführt wird, wenn die Shell ein Signal empfängt, heißt "Trap". Wenn ein Ereignis auftritt, sendet Bash die Benachrichtigung nach einem Signal. Viele Signale sind in Bash erhältlich. Das häufigste Signal von Bash ist SIGINT (Signal -Interrupt). Wenn der Benutzer Strg+C drückt, um einen Prozess vom Terminal aus zu unterbrechen, wird dieses Signal gesendet, um das System zu benachrichtigen. Wie Sie den Trap -Befehl verwenden können, um verschiedene Arten von Signalen zu verarbeiten, wird in diesem Tutorial erläutert.

Syntax:

Trap [-lp] [[arg] signal_spec…]

oder

Trap [Aktion] [Signal]
Taste Beschreibung
-l Es wird verwendet, um die Liste aller Signalnamen mit der entsprechenden Nummer anzuzeigen.
-P Es wird verwendet, um den Befehl Signal oder Trap für Signal_Spec anzuzeigen.
arg Es wird verwendet, um einen Befehl auszuführen, wenn die Shell die Signal (en) empfängt.
Signal_Spec Es enthält den Signalnamen oder die Signalnummer.
  • Trap-Befehl ohne ARG-Wert oder mit '-' arg-Wert setzt das angegebene Signal auf seinen ursprünglichen Wert zurück.
  • Trap -Befehl mit 'null' arg -Wert ignoriert das angegebene Signal, das von der Shell oder dem Befehl gesendet wird.
  • Ein Signal_Spec mit dem Wert, beenden (0) wird arg ausführen, nachdem er aus der Shell beendet hat.
  • Ein Signal_Spec mit dem Wert debuggen wird Arg vor jedem einzelnen Befehl ausführen.
  • Ein Signal_Spec mit dem Wert zurückkehren führt ARG jedes Mal aus, wenn eine Shell -Funktion ausgeführt wird oder ein Skript durch ausgeführt wird “.”.
  • Ein Signal_Spec mit dem Wert irren wird jedes Mal beim Befehlsfehler ARG ausführen.

Trap -Befehl ohne Option und arg

Führen Sie den folgenden Befehl vom Terminal aus, um die Liste aller mit jeder Bedingung zugeordneten Befehle anzuzeigen. Wenn ein Befehl 'Trap' vorher nicht festgelegt wird, wird der folgende Befehl keine Informationen angezeigt.

$ Trap

Trap -Befehl mit -l -Option

Führen Sie den folgenden Befehl vom Terminal aus, um die Liste aller Signalnamen mit der Nummer anzuzeigen.

$ fallen -l

Die Ausgabe des obigen Befehls zeigt die Liste von 64 Signalen mit Zahlen an.

Setzen Sie den Befehl fallen für err und beenden

Der folgende erste Befehl setzt einen Befehl "Trap", der ausgeführt wird, wenn ein Shell -Fehler auftritt oder Shell verlässt. Dieser Befehl "Falle" wird entfernt Temperatur.txt Datei aus dem aktuellen Standort. Der Befehl 'ls' wird verwendet, um die zu überprüfen Temperatur.txt Die Datei existiert oder nicht am aktuellen Ort. zuletzt Ausfahrt Der Befehl wird verwendet, um den Terminal zu schließen und den zuvor festgelegten Befehl "Trap" auszuführen.

$ Trap 'RM -Temperatur.txt 'Err beenden
$ ls
$ Exit

Nach dem Ausführen der obigen Befehle wird die folgende Ausgabe angezeigt.

Wenn der Benutzer nun das Terminal nach dem Beenden erneut öffnet und den Befehl 'ls' ausführt Temperatur.txt Datei wird nicht existieren.

Setzen Sie den Befehl 'Trap' mit Signalnummer von Sigup, Sigquit und Sigkill

Die Signalzahl von Sigup, Sigquit Und Sigkill sind 1, 3 und 9. Der folgende erste Befehl setzt eine Falle für diese drei Signale. Wenn eines dieser Signal auftritt, dann die Nachricht “Trap -Befehl wird ausgeführt”Wird drucken. Führen Sie den folgenden Befehl vom Terminal aus.

$ Trap 'Echo Trap -Befehl ausgeführt' 1 3 9

Wenn der Benutzer drückt Strg+c So erzeugen Sie den Befehl des Signals, zugewiesen durch 'Trap', dann der Befehl 'Echo' Der Befehl des Befehls von Trap wird ausgeführt und die folgende Ausgabe wird angezeigt.

Setzen Sie den Befehl 'Trap' für Sigterm in einem Skript

Sigterm Signal wird verwendet, um den Prozess sofort zu beenden, indem seine Ressourcen freigelassen werden. Erstellen Sie eine Bash -Datei namens 'Trapscript.Sch'Mit dem folgenden Code. Ein unendlicher für die Schleife wird in dem Skript deklariert, das einen Text kontinuierlich druckt, bis Sigterm Signal tritt auf. Der Benutzer muss drücken Strg+z generieren Sigterm Signal.

Trapscript.Sch

#!/Bin/Bash
# Legen Sie eine Falle für SIGINT- und SIGMTERM -Signale ein
Trap "Echo Das Programm wird gekündigt."Sigterm Sigint
#Display -Nachricht, um Sigterm zu generieren
Echo "Drücken Sie Strg+z Stoppen Sie den Prozess"
#Initialisieren Sie die Gegenvariable, ich
I = 1
#Declare Infinite für Schleife
für(;;)
Tun
#Drucknachricht mit The Counter i
Echo „Die Schleife für $ I Times ausführen“
#Inkrementiert die Theke um eins
((i ++))
Erledigt

Führen Sie das Skript aus, indem Sie den folgenden Befehl ausführen, und drücken Sie Strg+Z, um zu generieren Sigterm Signal. Die folgende ähnliche Ausgabe wird angezeigt.

$ bash tapapscript.Sch

Stellen Sie einen Befehl "Trap" fest, um eine Funktion basierend auf einem bestimmten Signal auszuführen

Sie können einen Befehl "Trap" mit jeder benutzerdefinierten Funktion in Verbindung bringen. Erstellen Sie eine Bash mit dem Namen Traapfunc.Sch und fügen Sie das folgende Skript hinzu. Hier eine benutzerdefinierte Funktion benannt func () wird erklärt, eine einfache Nachricht zu drucken, "Aufgabe erledigt". Es wird eine For-In-Schleife definiert, um die Liste aller Dateien und Ordner des aktuellen Arbeitsverzeichnisses zu lesen und zu drucken. 'fangen' Der Befehl, der am Anfang der Liste definiert ist, func () Wenn das Programm endet.

Traapfunc.Sch

#!/Bin/Bash
# Aufrufen der Func -Funktion beim Beenden
FACE FUNC -Ausgang
# Die Funktion deklarieren
Funktion func ()
echo "Aufgabe abgeschlossen"

# Lesen Sie die Dateien und Ordner der aktuellen Verzeichnisliste mit für die Schleife durch
denn ich in *
Tun
echo "$ ich"
Erledigt

Führen Sie das Skript aus dem Terminal aus.

Führen Sie das Skript aus.

$ Bash Traapfunc.Sch

Die folgende Ausgabe zeigt das, "Aufgabe erledigtDer Text wird nach dem Drucken aller Dateien und Ordner des aktuellen Verzeichnisses gedruckt.

Abschluss

Dieses Tutorial zeigt, wie 'Trap' Befehl unter Linux verwendet werden kann, um eine automatisierte Aufgabe basierend auf generiertem Signal auszuführen. Es hilft Benutzern, verschiedene Arten von Fehlern nachzuverfolgen und ordnungsgemäße Maßnahmen zu ergreifen, die zuvor mit diesem Befehl zugewiesen werden können. Viele Programme oder Skripte vergeben bestimmte Ressourcen beim Ausführen im System. Wenn ein ausgeführter Programm oder Skript abnormal beendet oder abnormal beendet wird, werden die von diesem Programm verwendeten Ressourcen blockiert. Der Befehl 'Trap' kann verwendet werden, um dieses Problem zu lösen. Die Ressourcenreinigungsaufgabe kann einfach mit diesem Befehl erfolgen. Hoffnung, der Leser bekommt nach dem Lesen dieses Tutorials eine klare Vorstellung von den Verwendungen dieses Befehls.