Linux-kommandoer

Bash trap-kommando

Bash trap-kommando
En innebygd bash-kommando som brukes til å utføre en kommando når skallet mottar noe signal, kalles 'felle'. Når en hendelse inntreffer, sender bash varselet med et hvilket som helst signal. Mange signaler er tilgjengelige i bash. Det vanligste signalet til bash er SIGINT (Signal Interrupt). Når brukeren trykker CTRL + C for å avbryte enhver prosess fra terminalen, sendes dette signalet for å varsle systemet.  Hvordan du kan bruke fellekommando til å håndtere forskjellige typer signaler er forklart i denne veiledningen.

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

$ felle

Fellekommando med -l alternativ

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

$ trap -l

Utgangen 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 9

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

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

Mus Kartlegg museknappene på en annen måte for annen programvare med X-Mouse Button Control
Kartlegg museknappene på en annen måte for annen programvare med X-Mouse Button Control
Kanskje du trenger et verktøy som kan gjøre at musens kontroll endres med hvert program du bruker. Hvis dette er tilfelle, kan du prøve et program som...
Mus Microsoft Sculpt Touch Wireless Mouse Review
Microsoft Sculpt Touch Wireless Mouse Review
Jeg har nylig lest om Microsoft Sculpt Touch trådløs mus og bestemte meg for å kjøpe den. Etter å ha brukt den en stund bestemte jeg meg for å dele mi...
Mus AppyMouse Pekeplate og musepeker på skjermen for Windows-nettbrett
AppyMouse Pekeplate og musepeker på skjermen for Windows-nettbrett
Nettbrettbrukere savner ofte musepekeren, spesielt når de bruker vanlige bærbare datamaskiner. Berøringsskjermen Smarttelefoner og nettbrett har mange...