Polecenia Linuksa

Polecenie Bash-pułapki

Polecenie Bash-pułapki
Wbudowane polecenie bash, które jest używane do wykonania polecenia, gdy powłoka odbierze jakikolwiek sygnał, nazywa się „trap”. Gdy wystąpi jakiekolwiek zdarzenie, bash wysyła powiadomienie dowolnym sygnałem. Wiele sygnałów jest dostępnych w bash. Najczęstszym sygnałem bash jest SIGINT (przerwanie sygnału). Gdy użytkownik naciśnie klawisze CTRL+C, aby przerwać dowolny proces z terminala, ten sygnał jest wysyłany w celu powiadomienia systemu.  W tym samouczku wyjaśniono, jak używać polecenia trap do obsługi różnych typów sygnałów.

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 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łapka

Polecenie pułapki 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 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 9

Kiedy 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.cii

Poniż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.

Gry Najlepsze emulatory konsoli do gier dla systemu Linux
Najlepsze emulatory konsoli do gier dla systemu Linux
W tym artykule wymienimy popularne oprogramowanie do emulacji konsoli do gier dostępne dla systemu Linux. Emulacja to warstwa kompatybilności oprogram...
Gry Najlepsze dystrybucje Linuksa do gier w 2021 r
Najlepsze dystrybucje Linuksa do gier w 2021 r
System operacyjny Linux przeszedł długą drogę od pierwotnego, prostego, serwerowego wyglądu. Ten system operacyjny znacznie się poprawił w ostatnich l...
Gry Jak przechwytywać i przesyłać strumieniowo sesję gry w systemie Linux
Jak przechwytywać i przesyłać strumieniowo sesję gry w systemie Linux
W przeszłości granie w gry było uważane tylko za hobby, ale z czasem branża gier odnotowała ogromny wzrost pod względem technologii i liczby graczy. P...