Bash Trap Command

Bash Trap Command
En innebygd bash-kommando som brukes til å utføre en kommando når skallet mottar noe signal kalles 'Trap'. Når enhver hendelse oppstår, sender Bash varslingen med et hvilket som helst signal. Mange signaler er tilgjengelige i bash. Det vanligste signalet om bash er Sigint (signalavbrudd). Når brukeren trykker på CTRL+C for å avbryte enhver prosess fra terminalen, blir dette signalet sendt for å varsle systemet. Hvordan du kan bruke Trap -kommandoen til å håndtere forskjellige typer signaler blir forklart i denne opplæringen.

Syntaks:

Trap [-lp] [[Arg] Signal_spec…]

eller

felle [handling] [signal]
Nøkkel Beskrivelse
-l Den brukes til å vise listen over alle signalnavn med tilsvarende nummer.
-p Det brukes til å vise signalkommando eller felle -kommando for signal_spec.
Arg Den brukes til å utføre en kommando når skallet mottar signalet (e).
signal_spec Den inneholder signalnavn eller signalnummer.
  • Trap-kommando uten Arg-verdi eller med '-' Arg-verdien vil tilbakestille det spesifiserte signalet til den opprinnelige verdien.
  • Trap -kommando med 'null' arg -verdi vil ignorere det spesifiserte signalet som sendes av skallet eller kommandoen.
  • Et signal_spec med verdien, Avslutt (0) vil utføre Arg etter at jeg har gått ut av skallet.
  • Et signal_spec med verdien feilsøking vil utføre Arg før hver enkelt kommando.
  • Et signal_spec med verdien komme tilbake vil utføre Arg hver gang en skallfunksjon kjøres eller et skript som drives av “.”.
  • Et signal_spec med verdien feil vil utføre ARG hver gang på kommandosvikt.

Felle kommando uten noe alternativ og arg

Kjør følgende kommando fra terminalen for å vise listen over alle kommandoer tilknyttet hver tilstand. Hvis noen "Trap" -kommando ikke er angitt før, vil ikke følgende kommando vise noen informasjon.

$ Trap

Felle kommando med -l -alternativet

Kjør følgende kommando fra terminalen for å vise listen over alle signalnavn med nummer.

$ Trap -l

Utgangen fra kommandoen ovenfor vil vise listen over 64 signaler med tall.

Angi felle -kommando for feil og avslutning

Følgende første kommando vil angi en "felle" -kommando som vil utføre når noen skallfeil oppstår eller skallutganger. Denne "felle" -kommandoen vil fjerne temp.tekst fil fra gjeldende plassering. 'ls' kommando brukes til å sjekke temp.tekst filen eksisterer eller ikke på det nåværende stedet. Til slutt exit Kommando brukes til å lukke terminalen og utføre 'Trap' -kommandoen som er satt før.

$ Trap 'RM Temp.TXT 'ERR EXIT
$ ls
$ exit

Følgende utgang vises etter å ha kjørt kommandoene ovenfor.

Nå, hvis brukeren åpner terminalen igjen etter avkjørsel og utfører 'LS' -kommando da temp.tekst filen vil ikke eksistere.

Sett 'Trap' -kommando med signalnummeret Sigup, Sigquit og Sigkill

Signalnummeret til Sigup, Sigquit og Sigkill er 1, 3 og 9. Følgende første kommando vil sette en felle for disse tre signalene. Når noe av disse signalene vil oppstå, er meldingen “Trap -kommandoen blir utført”Skal skrive ut. Kjør følgende kommando fra terminalen.

$ Trap 'Echo Trap -kommando utført' 1 3 9

Når brukeren vil trykke på Ctrl+c for å generere signaltilordningen med 'felle' -kommando så 'ekko' Kommando over Trap -kommandoen vil utføre og følgende utdata vises.

Sett 'Trap' -kommandoen for Sigterm i et skript

Sigterm Signal brukes til å avslutte prosessen umiddelbart ved å frigjøre ressursene. Lage en bash -fil som heter 'TapScript.sh'Med følgende kode. En uendelig for sløyfe er erklært i skriptet som vil skrive ut en tekst kontinuerlig til Sigterm signal oppstår. Brukeren må trykke på Ctrl+z å generere Sigterm signal.

TapScript.sh

#!/bin/bash
# Sett en felle for Sigint og Sigterm -signaler
felle "ekko programmet avsluttes."Sigterm Sigint
#Display -melding for å generere sigterm
ekko "Trykk Ctrl+Z Stopp prosessen"
#Initialiser motvariabel, i
i = 1
#Declare Infinite for Loop
til(;;)
gjøre
#Print -melding med counter i
ekko “Kjører sløyfen for $ I Times”
#Increment disken av en
((i ++))
Ferdig

Kjør skriptet ved å utføre følgende kommando og trykk CTRL+Z for å generere Sigterm signal. Følgende lignende utgang vises.

$ Bash TapScript.sh

Angi en "felle" -kommando for å kjøre en funksjon basert på bestemt signal

Du kan knytte en "Trap" -kommando med hvilken som helst brukerdefinert funksjon. Lage en bash kalt Trapfunc.sh og legg til følgende skript. Her en tilpasset funksjon som heter func () er erklært å skrive ut en enkel melding, “Oppgaven fullført”. En for-i-loop er definert for å lese og skrive ut listen over alle filer og mapper i den gjeldende arbeidskatalogen. 'felle' Kommando som er definert i begynnelsen av listen vil kalle funksjonen, func () Når programmet avsluttes.

Trapfunc.sh

#!/bin/bash
# Ring func -funksjon ved utgang
Trap func exit
# Erklære funksjonen
funksjon func ()
ekko "oppgave fullført"

# Les filene og mappene på gjeldende katalogliste ved å bruke for loop
for jeg i *
gjøre
ekko "$ i"
Ferdig

Kjør manuset fra terminalen.

Kjør manuset.

$ bash trapfunc.sh

Følgende utgang viser det, “Oppgaven fullført”Tekst skrives ut etter å ha skrevet ut alle filer og mapper i den gjeldende katalogen.

Konklusjon

Denne opplæringen viser hvordan 'Trap' -kommando kan brukes i Linux for å gjøre en automatisert oppgave basert på generert signal. Det hjelper brukere å spore forskjellige typer feil og ta riktige tiltak som kan tildeles før ved å bruke denne kommandoen. Mange programmer eller skript tildeler noen spesielle ressurser når du kjører i systemet. Hvis noe løpsprogram eller skriptutgang eller avslutter unormalt, blir ressursene som brukes av det programmet blokkert. 'Trap' -kommando kan brukes til å løse dette problemet. Ressursrengjøringsoppgave kan gjøres enkelt ved å bruke denne kommandoen. Håper, leseren vil få en klar idé om bruken av denne kommandoen etter å ha lest denne opplæringen.