Sintaksa:
zamka [-lp] [[arg] signal_spec…]ili
zamka [akcija] [signal]Ključ | Opis |
-l | Koristi se za prikaz popisa svih imena signala s odgovarajućim brojem. |
-str | Koristi se za prikaz naredbe signala ili naredbe zamke za signal_spec. |
arg | Koristi se za izvršavanje naredbe kada ljuska primi signal (e). |
signal_spec | Sadrži ime ili broj signala. |
- Naredba trap bez arg vrijednosti ili sa '-' arg vrijednošću vratit će navedeni signal na izvornu vrijednost.
- Trap naredba s 'null' arg vrijednošću ignorirat će navedeni signal koji šalje ljuska ili naredba.
- Signal_spec s vrijednošću, izlaz (0) izvršit će arg nakon izlaska iz ljuske.
- Signal_spec s vrijednošću otklanjanje pogrešaka izvršit će arg prije svake pojedine naredbe.
- Signal_spec s vrijednošću povratak izvršit će arg svaki put kada se izvrši funkcija ljuske ili skripta koju pokreće ".".
- Signal_spec s vrijednošću pogreška izvršit će arg svaki put u slučaju neuspjeha naredbe.
Trap naredba bez ikakve opcije i arg
Pokrenite sljedeću naredbu s terminala da biste prikazali popis svih naredbi povezanih sa svakim uvjetom. Ako bilo koja naredba "zamka" nije postavljena prije, sljedeća naredba neće prikazati nikakve informacije.
$ zamkaNaredba za hvatanje s opcijom -l
Pokrenite sljedeću naredbu s terminala za prikaz popisa svih imena signala s brojem.
$ zamka -lIzlaz gornje naredbe prikazat će popis od 64 signala s brojevima.
Postavite naredbu zamke za ERR i EXIT
Sljedeća prva naredba postavit će naredbu 'zamka' koja će se izvršiti kad se dogodi bilo koja pogreška u ljusci ili izlazak iz ljuske. Ova naredba 'zamka' uklonit će se temp.txt datoteka s trenutnog mjesta. Naredba 'ls' koristi se za provjeru temp.txt datoteka postoji ili ne postoji na trenutnom mjestu. posljednje Izlaz naredba koristi se za zatvaranje terminala i izvršavanje naredbe 'trap' koja je postavljena prije.
$ zamka 'rm temp.txt 'pogrešan izlaz$ ls
$ izlaz
Sljedeći će se izlaz pojaviti nakon pokretanja gornjih naredbi.
Ako korisnik nakon otvaranja ponovo otvori terminal i tada izvrši naredbu 'ls' temp.txt datoteka neće postojati.
Postavite naredbu "trap" s brojem signala SIGUP, SIGQUIT i SIGKILL
Broj signala POTPIS, SIGQUIT i SIGKILL su 1, 3 i 9. Sljedeća prva naredba postavit će zamku za ova tri signala. Kada se dogodi bilo koji od ovih signala, tada se prikazuje poruka „Izvodi se naredba zamke”Ispisat će. Pokrenite sljedeću naredbu s terminala.
$ trap 'echo Izvedena naredba zamke' 1 3 9Kada će korisnik pritisnuti Ctrl + C za generiranje dodjele signala naredbom "trap", a zatim 'jeka' naredba zamke izvršit će se naredba i pojavit će se sljedeći izlaz.
Postavite naredbu 'trap' za SIGTERM u skripti
SIGTERM signal se koristi za trenutni prekid procesa oslobađanjem njegovih resursa. Stvorite bash datoteku pod nazivom 'trapscript.sh'sa sljedećim kodom. U skripti je proglašena beskonačna petlja for koja će neprekidno ispisivati tekst do SIGTERM javlja se signal. Korisnik mora pritisnuti Ctrl + Z generirati SIGTERM signal.
trapscript.sh
#!/ bin / bash# Postavite zamku za signale SIGINT i SIGTERM
trap "echo Program je prekinut."SIGTERM ZNAK
# Prikaži poruku za generiranje SIGTERM
odjek "Pritisnite Ctrl + Z da zaustavite postupak"
#Initializiraj varijablu brojača, tj
i = 1
#declare beskonačno za petlju
za(;;)
čini
# Ispis poruke s brojačem i
echo "pokretanje petlje za $ i puta"
#Povećaj brojač za jedan
((i ++))
gotovo
Pokrenite skriptu izvršavanjem sljedeće naredbe i pritisnite Ctrl + Z za generiranje SIGTERM signal. Pojavit će se sljedeći slični rezultati.
$ bash trapscript.sh
Postavite naredbu 'trap' za pokretanje funkcije na temelju određenog signala
Naredbu 'zamka' možete povezati s bilo kojom korisnički definiranom funkcijom. Stvorite bash s imenom trapfunc.sh i dodajte sljedeću skriptu. Ovdje se naziva prilagođena funkcija func () proglašava se ispisom jednostavne poruke, "Zadatak završen". Definirana je petlja za ulazak za čitanje i ispis popisa svih datoteka i mapa trenutne radne mape. 'zamka' naredba koja je definirana na početku popisa pozvat će funkciju, func () kada se program završava.
trapfunc.sh
#!/ bin / bash# Pozovite funkcijsku funkciju na izlazu
trap func izlaz
# Deklarirajte funkciju
funkcija func ()
odjek "Zadatak dovršen"
# Pročitajte datoteke i mape trenutnog popisa direktorija pomoću petlje for
jer ja u *
čini
odjek "$ i"
gotovo
Pokrenite skriptu s terminala.
Pokrenite skriptu.
$ bash trapfunc.shSljedeći izlaz to pokazuje, “Zadatak završen”Tekst se ispisuje nakon ispisa svih datoteka i mapa trenutnog direktorija.
Zaključak
Ovaj vodič pokazuje kako se naredba 'trap' može koristiti u Linuxu za izvršavanje bilo kojeg automatiziranog zadatka na temelju generiranog signala. Korisnicima pomaže u pronalaženju različitih vrsta pogrešaka i poduzimanju odgovarajućih radnji koje se prije mogu dodijeliti pomoću ove naredbe. Mnogi programi ili skripte dodjeljuju neke određene resurse kada se izvode u sustavu. Ako bilo koji pokrenut program ili skripta abnormalno izađe ili se završi, resursi koje koristi taj program su blokirani. Za rješavanje ovog problema može se koristiti naredba 'trap'. Zadatak čišćenja resursa može se jednostavno izvršiti pomoću ove naredbe. Nadam se da će čitatelj dobiti jasnu ideju o upotrebi ove naredbe nakon čitanja ovog vodiča.