Polecenie pułapki bash

Polecenie pułapki bash
Wbudowane polecenie bash używane do wykonywania polecenia, gdy powłoka odbiera dowolny sygnał, nazywa się „pułapka”. Gdy wystąpi jakieś zdarzenie, Bash wysyła powiadomienie według dowolnego sygnału. Wiele sygnałów jest dostępnych w Bash. Najczęstszym sygnałem BASH jest Sigint (przerwanie sygnału). Gdy użytkownik naciska Ctrl+C, aby przerwać dowolny proces z terminalu, ten sygnał jest wysyłany w celu powiadomienia systemu. Jak możesz użyć polecenia TRAP do obsługi różnych rodzajów sygnałów, jest wyjaśnione w tym samouczku.

Składnia:

pułapka [-lp] [[arg] sygnał_spec…]

Lub

pułapka [działanie] [sygnał]
Klucz Opis
-L Służy do wyświetlania listy wszystkich nazw sygnałów z odpowiednim numerem.
-P Służy do wyświetlania polecenia sygnału lub polecenia TRAP dla Signal_Spec.
arg Służy do wykonywania polecenia, gdy powłoka odbiera sygnał (y).
Signal_spec Zawiera nazwę sygnału lub numer sygnału.
  • Polecenie TRAP bez wartości arg lub z „-” wartość arg zresetuje określony sygnał do jego pierwotnej wartości.
  • Polecenie TRAP z wartością arg „null” ignoruje określony sygnał wysyłany przez powłokę lub polecenie.
  • Signal_spec z wartością, wyjście (0) Wykonanie arg po wyjściu ze skorupy.
  • Signal_spec z wartością odpluskwić Wykonanie arg przed każdym poleceniem.
  • Signal_spec z wartością powrót będzie wykonywać arg za każdym razem, gdy funkcja powłoki wykonuje lub skrypt uruchomiony przez „.".
  • Signal_spec z wartością błądzić będzie wykonywać arg za każdym razem w przypadku awarii poleceń.

Polecenie TRAP bez żadnej opcji i arg

Uruchom następujące polecenie z terminala, aby wyświetlić listę wszystkich poleceń powiązanych z każdym warunkami. Jeśli jakiekolwiek polecenie „pułapka” nie jest ustawione wcześniej, następujące polecenie nie wyświetli żadnych informacji.

$ pułapka

Polecenie TRAP z opcją -l

Uruchom następujące polecenie z terminala, aby wyświetlić listę wszystkich nazw sygnałów z numerem.

$ pułapka -l

Wyjście powyższego polecenia wyświetli listę 64 sygnałów z liczbami.

Ustaw polecenie Trap dla ERR i Exit

Poniższe pierwsze polecenie ustawi polecenie „pułapka”, które zostanie wykonane, gdy wystąpi jakikolwiek błąd powłoki lub wychodzi z powłoki. To polecenie „pułapka” usunie Temp.tekst Plik z bieżącej lokalizacji. Polecenie „LS” służy do sprawdzenia Temp.tekst Plik istnieje lub nie w bieżącej lokalizacji. W końcu Wyjście Polecenie służy do zamykania terminalu i wykonania polecenia „pułapka”, które jest ustawione wcześniej.

$ TRAP 'RM TEMP.TXT 'ERR EXIT
$ ls
$ exit

Następujące dane wyjściowe pojawią się po uruchomieniu powyższych poleceń.

Teraz, jeśli użytkownik ponownie otworzy terminal po wyjściu i wykonuje polecenie „LS”, to Temp.tekst Plik nie będzie istniał.

Ustaw polecenie „pułapka” z numerem sygnału SIGUP, SIGQUIT i SIGKILL

Liczba sygnału Sigup, Sigquit I Sigkill są 1, 3 i 9. Poniższe pierwsze polecenie ustawi pułapkę dla tych trzech sygnałów. Kiedy pojawi się którykolwiek z tych sygnałów, wiadomość „Polecenie Trap jest wykonywane„Wydrukuje. Uruchom następujące polecenie z terminala.

Wykonane polecenie pułapki $ pułapki '1 3 9

Kiedy użytkownik naciśnie Ctrl+c Aby wygenerować przypisanie sygnału przez polecenie „pułapka”, a następnie 'Echo' Polecenie polecenia TRAP zostanie wykonane i pojawi się następujące dane wyjściowe.

Ustaw polecenie „pułapka” dla Sigterm w skrypcie

Sigterm Sygnał służy do natychmiastowego zakończenia procesu poprzez zwolnienie jego zasobów. Utwórz plik bash o nazwie 'Trapscript.cii„Z następującym kodem. Nieskończona pętla jest zadeklarowana w skrypcie, który będzie drukował tekst w sposób ciągły Sigterm Występuje sygnał. Użytkownik musi naciskać Ctrl+z generować Sigterm sygnał.

Trapscript.cii

#!/bin/bash
# Ustaw pułapkę dla sygnałów SIGINT i SIGTERM
pułapka „echo program jest zakończony.„Sigerm Sigint
#Display wiadomość do wygenerowania sigterm
echo „Naciśnij Ctrl+Z Zatrzymaj proces”
#Initializuj zmienną kontratakową, i
i = 1
#Declare nieskończone dla pętli
Do(;;)
Do
#Print Wiadomość z licznikiem i
echo „Uruchamianie pętli za $ i czasy”
#Increment the Counter by One
((i ++))
zrobione

Uruchom skrypt, wykonując następujące polecenie i naciśnij Ctrl+Z, aby wygenerować Sigterm sygnał. Pojawi się następujące podobne wyjście.

$ Bash Trapprisc.cii

Ustaw polecenie „pułapka”, aby uruchomić funkcję na podstawie konkretnego sygnału

Możesz powiązać polecenie „pułapka” z dowolną funkcją zdefiniowaną przez użytkownika. Utwórz bash o nazwie Trapfunc.cii i dodaj następujący skrypt. Tutaj wymieniona funkcja niestandardowa func () jest zadeklarowany do wydrukowania prostej wiadomości, "Zadanie ukończone". Pętla jest zdefiniowana do odczytu i drukowania listy wszystkich plików i folderów bieżącego katalogu roboczego. 'pułapka' polecenie zdefiniowane na początku listy wywoła funkcję, func () Kiedy program kończy.

Trapfunc.cii

#!/bin/bash
# Wywołaj funkcję FUNC na wyjściu
Wyjście z pułapki Func
# Deklaruj funkcję
funkcja func ()
Echo „Zadanie zakończone”

# Przeczytaj pliki i foldery bieżącej listy katalogów za pomocą pętli
bo w *
Do
echo „$ i”
zrobione

Uruchom skrypt z terminalu.

Uruchom skrypt.

$ Bash Trapfunc.cii

Pokazuje to następujące dane wyjściowe, "Zadanie ukończone”Tekst jest drukowany po wydrukowaniu wszystkich plików i folderów bieżącego katalogu.

Wniosek

Ten samouczek pokazuje, w jaki sposób polecenie „pułapki” można użyć w Linux do wykonania dowolnego zautomatyzowanego zadania na podstawie wygenerowanego sygnału. Pomaga użytkownikom śledzić różne rodzaje błędów i podejmować właściwe działania, które można przypisać wcześniej za pomocą tego polecenia. Wiele programów lub skryptów przeznacza niektóre szczególne zasoby podczas pracy w systemie. Jeśli jakikolwiek uruchomiony program lub scenariusz wyjść lub zakończyć nienormalnie, zasoby użyte przez ten program są zablokowane. Polecenie „pułapka” można użyć do rozwiązania tego problemu. Zadanie czyszczenia zasobów można łatwo wykonać za pomocą tego polecenia. Mam nadzieję, czytelnik otrzyma jasne wyobrażenie o zastosowaniach tego polecenia po przeczytaniu tego samouczka.