Linux-kommandon

Bash trap-kommando

Bash trap-kommando
Ett inbyggt bash-kommando som används för att utföra ett kommando när skalet tar emot någon signal kallas 'trap'. När någon händelse inträffar skickar bash meddelandet med vilken signal som helst. Många signaler finns tillgängliga i bash. Den vanligaste signalen för bash är SIGINT (Signal Interrupt). När användaren trycker på CTRL + C för att avbryta någon process från terminalen skickas denna signal för att meddela systemet.  Hur du kan använda trap-kommandot för att hantera olika typer av signaler förklaras i denna handledning.

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.

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.

$ trap

Fälla kommando med -l alternativ

Kör följande kommando från terminalen för att visa listan över alla signalnamn med nummer.

$ trap -l

Utgå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 9

Nä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.sh

Fö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.

Bästa Linux Distros för spel 2021
Linux-operativsystemet har kommit långt från sitt ursprungliga, enkla, serverbaserade utseende. Detta operativsystem har förbättrats enormt de senaste...
Hur du fångar och strömmar din spelsession på Linux
Tidigare betraktades spel bara som en hobby, men med tiden såg spelindustrin en enorm tillväxt när det gäller teknik och antalet spelare. Spelpubliken...
Bästa spel att spela med handspårning
Oculus Quest introducerade nyligen den fantastiska idén om handspårning utan kontroller. Med ett ständigt ökande antal spel och aktiviteter som utför ...