Składnia:
trap [-lp] [[arg] specyfikacja_sygnału… ]lub
pułapka [działanie] [sygnał]Klucz | Opis |
-ja | 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 pułapki dla signal_spec. |
argumentować | Jest używany do wykonania polecenia, gdy powłoka otrzyma sygnał(y). |
specyfikacja_sygnału | Zawiera nazwę sygnału lub numer sygnału. |
- Polecenie Trap bez wartości arg lub z wartością arg '-' zresetuje określony sygnał do jego pierwotnej wartości.
- Polecenie Trap z wartością argumentu „null” zignoruje określony sygnał wysłany przez powłokę lub polecenie.
- signal_spec z wartością, wyjście(0) wykona arg po wyjściu z powłoki.
- signal_spec z wartością odpluskwić wykona arg przed każdym pojedynczym poleceniem.
- signal_spec z wartością powrót wykona arg za każdym razem, gdy wykonywana jest funkcja powłoki lub skrypt uruchamiany przez “.”.
- signal_spec z wartością błądzić wykona arg za każdym razem w przypadku niepowodzenia polecenia.
Polecenie pułapki bez żadnej opcji i argumentu
Uruchom następujące polecenie z terminala, aby wyświetlić listę wszystkich poleceń związanych z każdym warunkiem. Jeśli jakakolwiek komenda 'pułapki' nie zostanie wcześniej ustawiona, następujące polecenie nie wyświetli żadnych informacji.
$ pułapkaPolecenie pułapki z opcją -l
Uruchom następujące polecenie z terminala, aby wyświetlić listę wszystkich nazw sygnałów z numerem.
$ pułapka -lWyjście powyższego polecenia pokaże listę 64 sygnałów z numerami.
Ustaw komendę pułapki dla ERR i EXIT
Następujące pierwsze polecenie ustawi polecenie „pułapki”, które zostanie wykonane, gdy wystąpi jakikolwiek błąd powłoki lub gdy powłoka zakończy pracę. To polecenie „pułapki” usunie temp.tekst plik z bieżącej lokalizacji. Polecenie 'ls' służy do sprawdzania temp.tekst plik istnieje lub nie znajduje się w bieżącej lokalizacji. W końcu Wyjście polecenie służy do zamknięcia terminala i wykonania polecenia „pułapki”, które zostało ustawione wcześniej.
$ pułapka 'rm temp.txt' błąd wyjścia$ ls
$ wyjdź
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 wykona polecenie ls, to temp.tekst plik nie będzie istniał.
Ustaw polecenie „pułapki” z numerem sygnału SIGUP, SIGQUIT i SIGKILL
Numer sygnału SIGUP, SIGQUIT i SIGKILL to 1, 3 i 9. Następujące pierwsze polecenie ustawi pułapkę na te trzy sygnały:. Gdy wystąpi którykolwiek z tych sygnałów, pojawi się komunikat „Wykonywane jest polecenie pułapki” wydrukuje. Uruchom następujące polecenie z terminala.
$ trap 'echo Wykonano polecenie Trap' 1 3 9Kiedy użytkownik naciśnie Ctrl+C aby wygenerować sygnał przypisany komendą 'trap', a następnie 'Echo' polecenie trap zostanie wykonane i pojawi się następujące wyjście output.
Ustaw polecenie 'trap' 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 'pułapka.cii'z następującym kodem. W skrypcie zadeklarowana jest nieskończona pętla for, która będzie drukować tekst w sposób ciągły, aż SIGTERM pojawia się sygnał. Użytkownik musi nacisnąć Ctrl+Z generować SIGTERM sygnał.
pułapka.cii
#!/bin/bash# Ustaw pułapkę na sygnały SIGINT i SIGTERM
pułapka "echo Program został zakończony.„SIGTERM PODPIS
#Wyświetl wiadomość, aby wygenerować SIGTERM
echo "Naciśnij Ctrl+Z, zatrzymaj proces"
#Zainicjuj zmienną licznika, i
ja=1
#deklaruj nieskończoną pętlę for
dla(;;)
zrobić
#Wydrukuj wiadomość z licznikiem i
echo „uruchamianie pętli przez $i razy”
#Zwiększ licznik o jeden
((i++))
gotowy
Uruchom skrypt, wykonując następujące polecenie i naciśnij Ctrl + Z, aby wygenerować SIGTERM sygnał. Pojawią się następujące podobne dane wyjściowe.
$ bash trapscript.cii
Ustaw polecenie „pułapki”, aby uruchomić funkcję opartą na określonym sygnale
Możesz powiązać polecenie „pułapki” z dowolną funkcją zdefiniowaną przez użytkownika. Utwórz bash o nazwie pułapka.cii i dodaj następujący skrypt. Tutaj funkcja niestandardowa o nazwie funkcja() jest zadeklarowany do drukowania prostej wiadomości, "Zadanie ukończone". Pętla for-in jest zdefiniowana do odczytu i drukowania listy wszystkich plików i folderów bieżącego katalogu roboczego working. 'pułapka' polecenie zdefiniowane na początku listy wywoła funkcję, funkcja() po zakończeniu programu.
pułapka.cii
#!/bin/bash# Zadzwoń do funkcji przy wyjściu
wyjście z pułapki
# Zadeklaruj funkcję
funkcja func()
echo "Zadanie ukończone"
# Czytaj pliki i foldery z bieżącej listy katalogów za pomocą pętli for
dla mnie w *
zrobić
echo „$i”
gotowy
Uruchom skrypt z terminala.
Uruchom skrypt.
$ bash trapfunc.ciiPoniższe dane wyjściowe pokazują, że, "Zadanie ukończone” tekst jest drukowany po wydrukowaniu wszystkich plików i folderów bieżącego katalogu.
Wniosek
Ten samouczek pokazuje, jak można użyć polecenia „trap” w systemie Linux do wykonania dowolnego automatycznego zadania na podstawie wygenerowanego sygnału. Pomaga użytkownikom śledzić różne rodzaje błędów i podejmować odpowiednie działania, które można przypisać wcześniej za pomocą tego polecenia. Wiele programów lub skryptów alokuje określone zasoby podczas działania w systemie. Jeśli któryś z uruchomionych programów lub skryptów zakończy pracę lub zakończy się nieprawidłowo, zasoby używane przez ten program są blokowane. Do rozwiązania tego problemu można użyć polecenia „pułapka”. Zadanie czyszczenia zasobów można łatwo wykonać za pomocą tego polecenia. Mam nadzieję, że po przeczytaniu tego samouczka czytelnik zrozumie, jak używać tego polecenia.