Linux-kommandoer

Bash trap-kommando

Bash trap-kommando
En indbygget bash-kommando, der bruges til at udføre en kommando, når skallen modtager et signal kaldes 'fælde'. Når en begivenhed opstår, sender bash underretningen med et hvilket som helst signal. Mange signaler er tilgængelige i bash. Det mest almindelige signal fra bash er SIGINT (Signal Interrupt). Når brugeren trykker på CTRL + C for at afbryde enhver proces fra terminalen, sendes dette signal for at underrette systemet.  Hvordan du kan bruge fældekommandoer til at håndtere forskellige typer signaler forklares i denne vejledning.

Syntaks:

fælde [-lp] [[arg] signal_spec ...]

eller

fælde [handling] [signal]
Nøgle Beskrivelse
-l Det bruges til at vise listen over alle signalnavne med det tilsvarende nummer.
-s Det bruges til at vise signalkommando eller fældekommando for signal_spec.
arg Det bruges til at udføre en kommando, når skallen modtager signalet / signalerne.
signal_spec Den indeholder signalnavn eller signalnummer.

Trap-kommando uden mulighed og arg

Kør følgende kommando fra terminalen for at få vist listen over alle kommandoer, der er knyttet til hver tilstand. Hvis der ikke er angivet nogen 'fælde' kommando, vil følgende kommando ikke vise nogen information.

$ fælde

Trap kommando med -l option

Kør følgende kommando fra terminalen for at få vist listen over alle signalnavne med nummer.

$ fælde -l

Outputtet fra ovenstående kommando viser listen over 64 signaler med tal.

Indstil fældekommando til ERR og EXIT

Følgende første kommando indstiller en 'trap' -kommando, der udføres, når der opstår en shell-fejl, eller når shell udgår. Denne 'trap' kommando fjernes Midlertidig.txt fil fra den aktuelle placering. 'ls' kommando bruges til at kontrollere Midlertidig.txt filen findes eller ikke på den aktuelle placering. Endelig Afslut kommando bruges til at lukke terminalen og udføre den 'trap' kommando, der er indstillet før.

$ trap 'rm temp.txt 'err exit
$ ls
$ exit

Følgende output vises efter kørsel af ovenstående kommandoer.

Hvis brugeren nu åbner terminalen igen efter exit og udfører kommandoen 'ls', så Midlertidig.txt filen findes ikke.

Indstil 'trap' kommando med signalnummer på SIGUP, SIGQUIT og SIGKILL

Signalnummeret på SIGUP, SIGQUIT og SIGKILL er 1, 3 og 9. Følgende første kommando sætter en fælde for disse tre signaler. Når noget af dette signal vil opstå, vises meddelelsen “Trap-kommando udføres”Udskrives.  Kør følgende kommando fra terminalen.

$ trap 'ekko Trap-kommando udført' 1 3 9

Når brugeren skal trykke på Ctrl + C for at generere signalet tildeles med 'trap' kommando, derefter 'ekko' command of trap-kommandoen udføres, og følgende output vises.

Indstil 'trap' kommando for SIGTERM i et script

SIGTERM signal bruges til at afslutte processen med det samme ved at frigive dens ressourcer. Opret en bash-fil med navnet 'fældeskrift.sh'med følgende kode. En uendelig løkke erklæres i scriptet, der udskriver en tekst kontinuerligt indtil SIGTERM signal opstår. Brugeren skal trykke på Ctrl + Z at generere SIGTERM signal.

fældeskrift.sh

#!/ bin / bash
 
# Indstil en fælde for SIGINT- og SIGTERM-signaler
trap "echo Programmet er afsluttet."SIGTERM SIGINT
 
#Display besked for at generere SIGTERM
ekko "Tryk på Ctrl + Z stop processen"
 
#Initialiser tællervariabel, i
i = 1
 
# erklær uendelig for loop
til(;;)
gør
# Udskriv besked med tæller i
ekko "kører løkken i $ i gange"
# Forøg tælleren med en
((i ++))
Færdig

Kør scriptet ved at udføre følgende kommando, og tryk på Ctrl + Z for at generere SIGTERM signal. Følgende lignende output vises.

$ bash fældeskript.sh

Indstil en 'trap' kommando til at køre en funktion baseret på et bestemt signal

Du kan knytte en 'trap' -kommando til enhver brugerdefineret funktion. Opret en bash med navnet trapfunc.sh og tilføj følgende script. Her er en brugerdefineret funktion navngivet func () erklæres for at udskrive en simpel besked, “Opgave afsluttet”. En for-in-loop er defineret til at læse og udskrive listen over alle filer og mapper i det aktuelle arbejdsmappe. 'fælde' kommando, der er defineret i begyndelsen af ​​listen, kalder funktionen, func () når programmet afsluttes.

trapfunc.sh

#!/ bin / bash
# Ring til funktionsfunktion ved afslutning
trap func exit
# Erklær funktionen
funktionsfunktion ()
 
ekko "Opgave afsluttet"

# Læs filerne og mapperne på den aktuelle katalogliste ved hjælp af for loop
for jeg i *
gør
ekko "$ i"
Færdig

Kør scriptet fra terminalen.

Kør scriptet.

$ bash trapfunc.sh

Følgende output viser det, “Opgaven er afsluttet”Tekst udskrives efter udskrivning af alle filer og mapper i det aktuelle bibliotek.

Konklusion

Denne tutorial viser, hvordan 'trap' -kommando kan bruges i Linux til at udføre enhver automatiseret opgave baseret på genereret signal. Det hjælper brugerne med at spore forskellige typer fejl og tage de rette handlinger, der kan tildeles før ved hjælp af denne kommando. Mange programmer eller scripts tildeler nogle bestemte ressourcer, når de kører i systemet. Hvis et kørende program eller script afslutter eller afsluttes unormalt, blokeres de ressourcer, der bruges af programmet. 'trap' kommando kan bruges til at løse dette problem. Ressourceoprydning kan nemt udføres ved hjælp af denne kommando. Håber, læseren får en klar idé om anvendelsen af ​​denne kommando efter at have læst denne vejledning.

Mus Microsoft Sculpt Touch Wireless Mouse Review
Microsoft Sculpt Touch Wireless Mouse Review
Jeg har for nylig læst om Microsoft Sculpt Touch trådløs mus og besluttede at købe den. Efter at have brugt det et stykke tid besluttede jeg at dele m...
Mus AppyMouse pegefelt på skærmen og musemarkør til Windows-tablets
AppyMouse pegefelt på skærmen og musemarkør til Windows-tablets
Tabletbrugere savner ofte musemarkøren, især når de er vante til at bruge bærbare computere. Touchscreen-smartphones og tablets har mange fordele, og ...
Mus Midterste museknap fungerer ikke i Windows 10
Midterste museknap fungerer ikke i Windows 10
Det midterste museknap hjælper dig med at rulle gennem lange websider og skærme med en masse data. Hvis det stopper, vil du ende med at bruge tastatur...