Syntaks:
felle [-lp] [[arg] signal_spec ...]eller
felle [handling] [signal]Nøkkel | Beskrivelse |
-l | Den brukes til å vise listen over alle signalnavn med tilsvarende nummer. |
-s | Den brukes til å vise signalkommando eller fellekommando for signal_spec. |
arg | Den brukes til å utføre en kommando når skallet mottar signalet / signalene. |
signal_spec | Den inneholder signalnavn eller signalnummer. |
- Fellekommando uten arg-verdi eller med '-' arg-verdi vil tilbakestille det angitte signalet til den opprinnelige verdien.
- Trap-kommando med 'null' arg-verdi ignorerer det angitte signalet som sendes av skallet eller kommandoen.
- Et signal_spec med verdien, utgang (0) vil utføre arg etter å ha gått ut av skallet.
- Et signal_spec med verdien feilsøke 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 kjøres av “.”.
- Et signal_spec med verdien feil vil utføre arg hver gang på kommandosvikt.
Fellekommando 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.
$ felleFellekommando med -l alternativ
Kjør følgende kommando fra terminalen for å vise listen over alle signalnavn med nummer.
$ trap -lUtgangen fra kommandoen ovenfor viser listen over 64 signaler med tall.
Sett fellekommando for ERR og EXIT
Følgende første kommando vil sette en 'trap' -kommando som vil kjøres når en skallfeil oppstår eller skallet avsluttes. Denne "fellen" -kommandoen vil fjerne temp.tekst filen fra gjeldende plassering. 'ls' kommando brukes til å sjekke temp.tekst filen eksisterer eller ikke på gjeldende plassering. Til slutt exit kommandoen brukes til å lukke terminalen og utføre "trap" -kommandoen som er satt før.
$ trap 'rm temp.txt 'err exit$ ls
$ exit
Følgende utdata vises når du har kjørt kommandoene ovenfor.
Nå, hvis brukeren åpner terminalen igjen etter avslutning og utfører 'ls' kommando da temp.tekst filen vil ikke eksistere.
Sett 'trap' -kommando med signalnummeret SIGUP, SIGQUIT og SIGKILL
Signalnummeret på 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 dette signalet vil oppstå, vises meldingen “Fellekommando utføres”Vil skrive ut. Kjør følgende kommando fra terminalen.
$ trap 'echo Trap-kommando utført' 1 3 9Når brukeren vil trykke Ctrl + C for å generere signalet tilordnet med 'trap' kommando så 'ekko' kommando av felle kommando vil kjøres og følgende utdata vises.
Sett 'trap' -kommando for SIGTERM i et skript
SIGTERM signalet brukes til å avslutte prosessen umiddelbart ved å frigjøre ressursene. Opprett en bash-fil med navnet 'felleskrift.sh'med følgende kode. En uendelig for loop er erklært i skriptet som vil skrive ut en tekst kontinuerlig til SIGTERM signal oppstår. Brukeren må trykke Ctrl + Z å generere SIGTERM signal.
felleskrift.sh
#!/ bin / bash# Sett en felle for SIGINT- og SIGTERM-signaler
trap "echo Programmet er avsluttet."SIGTERM SIGINT
#Display-melding for å generere SIGTERM
ekko "Trykk Ctrl + Z stopp prosessen"
#Initialize counter variable, i
jeg = 1
#deklarer uendelig for loop
til(;;)
gjøre
#Skriv ut melding med teller i
ekko “kjører løkken for $ i ganger”
# Øk telleren med en
((i ++))
ferdig
Kjør skriptet ved å utføre følgende kommando og trykk Ctrl + Z for å generere SIGTERM signal. Følgende lignende utdata vises.
$ bash felleskrift.sh
Sett en 'trap' -kommando for å kjøre en funksjon basert på et bestemt signal
Du kan knytte en 'trap' -kommando til hvilken som helst brukerdefinert funksjon. Lag en bash med navnet trapfunc.sh og legg til følgende skript. Her heter en tilpasset funksjon func () erklæres for å skrive ut en enkel melding, “Oppgaven fullført”. En for-in-loop er definert for å lese og skrive ut listen over alle filer og mapper i gjeldende arbeidskatalog. 'felle' kommandoen som er definert i begynnelsen av listen vil kalle funksjonen, func () når programmet avsluttes.
trapfunc.sh
#!/ bin / bash# Ring funksjonen ved avslutning
trap func exit
# Erklær funksjonen
funksjonsfunksjon ()
ekko "Oppgave fullført"
# Les filene og mappene til den nåværende kataloglisten ved hjelp av for loop
for jeg i *
gjøre
ekko "$ i"
ferdig
Kjør skriptet fra terminalen.
Kjør skriptet.
$ bash trapfunc.shFølgende utgang viser at, “Oppgaven fullført”-Teksten skrives ut etter at alle filer og mapper i den gjeldende katalogen er skrevet ut.
Konklusjon
Denne opplæringen viser hvordan 'trap' -kommando kan brukes i Linux for å utføre en hvilken som helst automatisert oppgave basert på generert signal. Det hjelper brukere å spore forskjellige typer feil og utføre riktige tiltak som kan tilordnes før ved å bruke denne kommandoen. Mange programmer eller skript tildeler noen spesielle ressurser når de kjører i systemet. Hvis noe kjørende program eller skript avsluttes eller avsluttes unormalt, blokkeres ressursene som brukes av programmet. 'trap' -kommandoen kan brukes til å løse dette problemet. Ressursrengjøringsoppgave kan gjøres enkelt ved å bruke denne kommandoen. Håper, leseren vil få en klar ide om bruken av denne kommandoen etter å ha lest denne opplæringen.