Linuxi käsud

Bash lõksu käsk

Bash lõksu käsk
Sisseehitatud bashi käsku, mida kasutatakse käsu täitmiseks, kui kest võtab vastu signaali, nimetatakse lõksuks. Kui mõni sündmus toimub, saadab bash teate mis tahes signaaliga. Paljud signaalid on saadaval bash-vormingus. Bashi kõige levinum signaal on SIGINT (Signal Interrupt). Kui kasutaja vajutab terminali mis tahes protsessi katkestamiseks klahvikombinatsiooni CTRL + C, saadetakse see signaal süsteemile teatavaks.  Selles õpetuses on selgitatud, kuidas saab trap-käsku kasutada erinevat tüüpi signaalide käsitsemiseks.

Süntaks:

lõksu [-lp] [[arg] signaali_spec…]

või

lõks [tegevus] [signaal]
Võti Kirjeldus
-l Seda kasutatakse kõigi vastavate numbritega signaalinimede loendi kuvamiseks.
-lk Seda kasutatakse signaali_spec signaali käsu või lõksu käsu kuvamiseks.
arg Seda kasutatakse käsu täitmiseks, kui kest võtab vastu signaali (d).
signaali_spec See sisaldab signaali nime või signaali numbrit.

Trap käsk ilma igasuguse valikuta ja arg

Käivitage terminalist järgmine käsk, et kuvada kõigi tingimustega seotud käskude loend. Kui mõnda käsku trap ei ole enne määratud, siis järgmine käsk ei näita teavet.

$ lõks

Püüniskäsk koos valikuga -l

Kõigi numbriga signaalinimede loendi kuvamiseks käivitage terminalist järgmine käsk.

$ lõks -l

Ülaltoodud käsu väljund näitab 64 numbriga signaali loendit.

Määra ERR ja EXIT jaoks käsk trap

Järgmine esimene käsk määrab käsu 'trap', mis käivitatakse siis, kui ilmneb mõni shelliviga või kui shell väljub. See käsk 'trap' eemaldatakse temp.txt fail praegusest asukohast. käsku 'ls' kasutatakse temp.txt fail on praeguses asukohas olemas või mitte. Viimaseks väljumine käsku kasutatakse terminali sulgemiseks ja eelnevalt seatud käsu 'trap' käivitamiseks.

$ trap 'rm temp.txt 'viga väljumine
$ ls
$ väljumine

Pärast ülaltoodud käskude käivitamist ilmub järgmine väljund.

Nüüd, kui kasutaja avab terminali pärast väljumist uuesti ja täidab käsu "ls" temp.txt faili pole olemas.

Määra käsk 'trap' signaali numbriga SIGUP, SIGQUIT ja SIGKILL

Signaali number SIGUP, SIGQUIT ja SIGKILL on 1, 3 ja 9. Järgmine esimene käsk seab nende kolme signaali jaoks lõksu. Kui mõni neist signaalidest ilmneb, kuvatakse teade “Käsk Trap täidetakse”Prinditakse.  Käivitage terminalist järgmine käsk.

$ trap 'echo Trap käsk täidetud' 1 3 9

Kui kasutaja vajutab Ctrl + C signaali määramiseks käsu 'trap' abil, siis "kaja" käsk trap on käivitatud ja ilmub järgmine väljund.

Määrake skriptis käsk SIGTERM käsule 'trap'

SIGTERM signaali kasutatakse protsessi viivitamatuks lõpetamiseks, vabastades selle ressursid. Loo bashi fail nimega 'katkend.sh'järgmise koodiga. Skriptis deklareeritakse lõpmatu tsükkel, mis printib teksti pidevalt kuni SIGTERM tekib signaal. Kasutaja peab vajutama Ctrl + Z genereerida SIGTERM signaal.

katkend.sh

#!/ bin / bash
 
# Määrake SIGINT- ja SIGTERM-signaalide jaoks lõks
trap "kaja Programm on lõpetatud."SIGTERM SIGINT
 
SIGTERM-i genereerimiseks kuvage teade #Display
kaja "Protsessi peatamiseks vajutage klahvikombinatsiooni Ctrl + Z"
 
# Initsialiseerige loendur muutuja, st
i = 1
 
#declare lõpmatu silmuseks
jaoks (;;)
tegema
#Prindi sõnum loenduriga i
kaja "tsükli käivitamine $ i korda"
# Lisage loendurit ükshaaval
((i ++))
tehtud

Käivitage skript, käivitades järgmise käsu ja vajutage genereerimiseks Ctrl + Z SIGTERM signaal. Ilmub järgmine sarnane väljund.

trükikiri $ bash.sh

Konkreetse signaali põhjal funktsiooni käivitamiseks määrake käsk 'trap'

Käsu 'trap' saate seostada mis tahes kasutaja määratud funktsiooniga. Looge bash nimega trapfunc.sh ja lisage järgmine skript. Siin kohandatud funktsioon nimega func () deklareeritakse lihtsa sõnumi printimiseks, „Ülesanne täidetud”. Sisselülitamise silmus on määratletud praeguse töökataloogi kõigi failide ja kaustade loendi lugemiseks ja printimiseks. "lõks" loendi alguses määratletud käsk kutsub funktsiooni, func () kui programm lõpeb.

trapfunc.sh

#!/ bin / bash
# Funktsiooni Funktsioon kõne väljumisel
lõksu funktsiooni väljapääs
# Deklareerige funktsioon
funktsioon func ()
 
kaja "Ülesanne täidetud"

# Lugege praeguse kataloogiloendi faile ja kaustu loopi jaoks
minu jaoks *
tegema
kaja "$ i"
tehtud

Käivitage skript terminalist.

Käivitage skript.

$ bash trapfunc.sh

Järgmine väljund näitab seda, “Ülesanne täidetud”Tekst prinditakse pärast kõigi praeguse kataloogi failide ja kaustade printimist.

Järeldus

See õpetus näitab, kuidas käsku "trap" saab Linuxis kasutada mis tahes genereeritud signaalil põhineva automatiseeritud toimingu tegemiseks. See aitab kasutajatel jälgida erinevat tüüpi vigu ja teha õigeid toiminguid, mida saab selle käsu abil enne määrata. Paljud programmid või skriptid eraldavad süsteemis töötades teatud ressursse. Kui mõni töötav programm või skript väljub ebanormaalselt või lõpetatakse, blokeeritakse selle programmi kasutatavad ressursid. Selle probleemi lahendamiseks saab kasutada käsku 'trap'. Ressursside puhastamise saab selle käsu abil hõlpsasti teha. Loodetavasti saab lugeja pärast selle õpetuse lugemist selge ülevaate selle käsu kasutamisest.

Kuidas kasutada Xdotooli hiireklõpsude ja klahvivajutuste stimuleerimiseks Linuxis
Xdotool on tasuta ja avatud lähtekoodiga käsurea tööriist hiireklõpsude ja klahvivajutuste simuleerimiseks. See artikkel hõlmab lühikest juhendit xdot...
Viis parimat ergonoomilist arvutihiiretoodet Linuxile
Kas pikaajaline arvuti kasutamine põhjustab valu randmes või sõrmedes?? Kas teil on liigeste jäikus ja peate pidevalt käsi suruma? Kas tunnete põletav...
How to Change Mouse and Touchpad Settings Using Xinput in Linux
Most Linux distributions ship with “libinput” library by default to handle input events on a system. It can process input events on both Wayland and X...