Syntaks:
fælde [-lp] [[arg] signal_spec ...]eller
fælde [handling] [signal]Nøgle | Beskrivelse |
-l | Det bruges til at vise listen over alle signalnavne med det tilsvarende nummer. |
-s | Det bruges til at vise signalkommando eller fældekommando for signal_spec. |
arg | Det bruges til at udføre en kommando, når skallen modtager signalet / signalerne. |
signal_spec | Den indeholder signalnavn eller signalnummer. |
- Trap-kommando uden arg-værdi eller med '-' arg-værdi nulstiller det angivne signal til dets oprindelige værdi.
- Trap-kommando med 'null' arg-værdi ignorerer det angivne signal sendt af skallen eller kommandoen.
- Et signal_spec med værdien, afslut (0) vil udføre arg efter afslutning fra skallen.
- Et signal_spec med værdien fejlfinde udfører arg før hver enkelt kommando.
- Et signal_spec med værdien Vend tilbage vil udføre arg hver gang når en shell-funktion udføres eller et script kørt af “.”.
- Et signal_spec med værdien fejle vil udføre arg hver gang på kommandofejl.
Trap-kommando uden mulighed og arg
Kør følgende kommando fra terminalen for at få vist listen over alle kommandoer, der er knyttet til hver tilstand. Hvis der ikke er angivet nogen 'fælde' kommando, vil følgende kommando ikke vise nogen information.
$ fældeTrap kommando med -l option
Kør følgende kommando fra terminalen for at få vist listen over alle signalnavne med nummer.
$ fælde -lOutputtet fra ovenstående kommando viser listen over 64 signaler med tal.
Indstil fældekommando til ERR og EXIT
Følgende første kommando indstiller en 'trap' -kommando, der udføres, når der opstår en shell-fejl, eller når shell udgår. Denne 'trap' kommando fjernes Midlertidig.txt fil fra den aktuelle placering. 'ls' kommando bruges til at kontrollere Midlertidig.txt filen findes eller ikke på den aktuelle placering. Endelig Afslut kommando bruges til at lukke terminalen og udføre den 'trap' kommando, der er indstillet før.
$ trap 'rm temp.txt 'err exit$ ls
$ exit
Følgende output vises efter kørsel af ovenstående kommandoer.
Hvis brugeren nu åbner terminalen igen efter exit og udfører kommandoen 'ls', så Midlertidig.txt filen findes ikke.
Indstil 'trap' kommando med signalnummer på SIGUP, SIGQUIT og SIGKILL
Signalnummeret på SIGUP, SIGQUIT og SIGKILL er 1, 3 og 9. Følgende første kommando sætter en fælde for disse tre signaler. Når noget af dette signal vil opstå, vises meddelelsen “Trap-kommando udføres”Udskrives. Kør følgende kommando fra terminalen.
$ trap 'ekko Trap-kommando udført' 1 3 9Når brugeren skal trykke på Ctrl + C for at generere signalet tildeles med 'trap' kommando, derefter 'ekko' command of trap-kommandoen udføres, og følgende output vises.
Indstil 'trap' kommando for SIGTERM i et script
SIGTERM signal bruges til at afslutte processen med det samme ved at frigive dens ressourcer. Opret en bash-fil med navnet 'fældeskrift.sh'med følgende kode. En uendelig løkke erklæres i scriptet, der udskriver en tekst kontinuerligt indtil SIGTERM signal opstår. Brugeren skal trykke på Ctrl + Z at generere SIGTERM signal.
fældeskrift.sh
#!/ bin / bash# Indstil en fælde for SIGINT- og SIGTERM-signaler
trap "echo Programmet er afsluttet."SIGTERM SIGINT
#Display besked for at generere SIGTERM
ekko "Tryk på Ctrl + Z stop processen"
#Initialiser tællervariabel, i
i = 1
# erklær uendelig for loop
til(;;)
gør
# Udskriv besked med tæller i
ekko "kører løkken i $ i gange"
# Forøg tælleren med en
((i ++))
Færdig
Kør scriptet ved at udføre følgende kommando, og tryk på Ctrl + Z for at generere SIGTERM signal. Følgende lignende output vises.
$ bash fældeskript.sh
Indstil en 'trap' kommando til at køre en funktion baseret på et bestemt signal
Du kan knytte en 'trap' -kommando til enhver brugerdefineret funktion. Opret en bash med navnet trapfunc.sh og tilføj følgende script. Her er en brugerdefineret funktion navngivet func () erklæres for at udskrive en simpel besked, “Opgave afsluttet”. En for-in-loop er defineret til at læse og udskrive listen over alle filer og mapper i det aktuelle arbejdsmappe. 'fælde' kommando, der er defineret i begyndelsen af listen, kalder funktionen, func () når programmet afsluttes.
trapfunc.sh
#!/ bin / bash# Ring til funktionsfunktion ved afslutning
trap func exit
# Erklær funktionen
funktionsfunktion ()
ekko "Opgave afsluttet"
# Læs filerne og mapperne på den aktuelle katalogliste ved hjælp af for loop
for jeg i *
gør
ekko "$ i"
Færdig
Kør scriptet fra terminalen.
Kør scriptet.
$ bash trapfunc.shFølgende output viser det, “Opgaven er afsluttet”Tekst udskrives efter udskrivning af alle filer og mapper i det aktuelle bibliotek.
Konklusion
Denne tutorial viser, hvordan 'trap' -kommando kan bruges i Linux til at udføre enhver automatiseret opgave baseret på genereret signal. Det hjælper brugerne med at spore forskellige typer fejl og tage de rette handlinger, der kan tildeles før ved hjælp af denne kommando. Mange programmer eller scripts tildeler nogle bestemte ressourcer, når de kører i systemet. Hvis et kørende program eller script afslutter eller afsluttes unormalt, blokeres de ressourcer, der bruges af programmet. 'trap' kommando kan bruges til at løse dette problem. Ressourceoprydning kan nemt udføres ved hjælp af denne kommando. Håber, læseren får en klar idé om anvendelsen af denne kommando efter at have læst denne vejledning.