Syntax:
fälla [-lp] [[arg] signal_spec ...]eller
fälla [åtgärd] [signal]Nyckel | Beskrivning |
-l | Den används för att visa listan över alla signalnamn med motsvarande nummer. |
-sid | Den används för att visa signalkommando eller fälla kommando för signal_spec. |
arg | Den används för att utföra ett kommando när skalet tar emot signalen (erna). |
signal_spec | Den innehåller signalnamn eller signalnummer. |
- Trap-kommando utan arg-värde eller med '-' arg-värde återställer den angivna signalen till dess ursprungliga värde.
- Trap-kommando med 'null' arg-värde ignorerar den angivna signalen som skickas av skalet eller kommandot.
- En signal_spec med värdet, avsluta (0) kommer att köra arg efter att ha lämnat skalet.
- En signal_spec med värdet felsöka kommer att köra arg före varje enskilt kommando.
- En signal_spec med värdet lämna tillbaka kommer att köra arg varje gång en skalfunktion körs eller ett skript som körs av “.”.
- En signal_spec med värdet fela kommer att köra arg varje gång vid kommandofel.
Fälla kommando utan något alternativ och arg
Kör följande kommando från terminalen för att visa listan över alla kommandon som är associerade med varje tillstånd. Om något '' trap '' - kommando inte har ställts in tidigare kommer följande kommando inte att visa någon information.
$ trapFälla kommando med -l alternativ
Kör följande kommando från terminalen för att visa listan över alla signalnamn med nummer.
$ trap -lUtgången från kommandot ovan visar listan med 64 signaler med siffror.
Ställ in fällkommando för ERR och EXIT
Följande första kommando ställer in ett "trap" -kommando som kommer att köras när något skalfel inträffar eller skalet avslutas. Detta "fälla" -kommando kommer att tas bort temp.Text fil från den aktuella platsen. 'ls' kommando används för att kontrollera temp.Text filen finns eller inte på den aktuella platsen. Slutligen utgång kommandot används för att stänga terminalen och utföra kommandot 'trap' som har ställts in tidigare.
$ trap 'rm temp.txt 'err exit$ ls
$ exit
Följande utdata visas efter att ovanstående kommandon har körts.
Nu, om användaren öppnar terminalen igen efter avslutning och kör 'ls' kommando då temp.Text filen finns inte.
Ställ in 'trap' -kommando med signalnummer SIGUP, SIGQUIT och SIGKILL
Signalnumret på SIGUP, SIGQUIT och SIGKILL är 1, 3 och 9. Följande första kommando sätter en fälla för dessa tre signaler. När någon av dessa signaler kommer att visas kommer meddelandet “Trap-kommandot körs”Kommer att skrivas ut. Kör följande kommando från terminalen.
$ trap 'echo Trap command executed' 1 3 9När användaren trycker på Ctrl + C för att generera signaltilldelningen med "trap" -kommandot sedan 'eko' command of trap-kommandot kommer att köras och följande utdata visas.
Ställ in 'trap' -kommando för SIGTERM i ett skript
SIGTERM signal används för att avsluta processen omedelbart genom att släppa dess resurser. Skapa en bash-fil med namnet 'fällskript.sh'med följande kod. En oändlig slinga förklaras i skriptet som skriver ut en text kontinuerligt fram till SIGTERM signal uppstår. Användaren måste trycka på Ctrl + Z att generera SIGTERM signal.
fällskript.sh
#!/ bin / bash# Ställ in en fälla för SIGINT- och SIGTERM-signaler
trap "echo Programmet avslutas."SIGTERM SIGINT
#Displaymeddelande för att generera SIGTERM
eko "Tryck Ctrl + Z stoppa processen"
#Initialize counter variabel, jag
i = 1
#declare oändlig för loop
för(;;)
do
# Skriv ut meddelande med räknare i
eko "kör slingan i $ i gånger"
# Öka räknaren med en
((i ++))
Gjort
Kör skriptet genom att utföra följande kommando och tryck på Ctrl + Z för att generera SIGTERM signal. Följande liknande utdata visas.
$ bash trapscript.sh
Ställ in ett "trap" -kommando för att köra en funktion baserat på en viss signal
Du kan associera ett "trap" -kommando med vilken användardefinierad funktion som helst. Skapa en bash med namnet trapfunc.sh och lägg till följande skript. Här heter en anpassad funktion funk () förklaras skriva ut ett enkelt meddelande, “Uppgiften slutförd”. En in-loop är definierad för att läsa och skriva ut listan över alla filer och mappar i den aktuella arbetskatalogen. 'fälla' kommando som definieras i början av listan kommer att anropa funktionen, funk () när programmet avslutas.
trapfunc.sh
#!/ bin / bash# Ring funkfunktion vid utgång
fälla func utgång
# Förklara funktionen
funktionsfunktion ()
eko "Uppgift slutförd"
# Läs filerna och mapparna i den aktuella kataloglistan med hjälp av for loop
för jag i *
do
eko "$ i"
Gjort
Kör skriptet från terminalen.
Kör manuset.
$ bash trapfunc.shFöljande utdata visar att, “Uppgiften slutförd”Text skrivs ut efter att alla filer och mappar i den aktuella katalogen har skrivits ut.
Slutsats
Denna handledning visar hur 'trap' -kommandot kan användas i Linux för att göra alla automatiserade uppgifter baserat på genererad signal. Det hjälper användare att spåra olika typer av fel och vidta lämpliga åtgärder som kan tilldelas tidigare med hjälp av detta kommando. Många program eller skript tilldelar vissa resurser när de körs i systemet. Om något program eller skript som körs avslutas eller avslutas onormalt blockeras de resurser som används av det programmet. 'trap' -kommandot kan användas för att lösa detta problem. Resursrengöringsuppgift kan göras enkelt med det här kommandot. Hoppas, läsaren får en klar uppfattning om användningen av detta kommando efter att ha läst denna handledning.