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 arg-väärtuseta või argum-väärtusega - - lähtestab määratud signaali algsele väärtusele.
- Trap-käsk arg null-väärtusega ignoreerib määratud kest või käsk saadetud signaali.
- Signal_spec väärtusega, väljumine (0) käivitab arg pärast kestast väljumist.
- Signal_spec väärtusega silumine käivitab arg enne iga käsku.
- Signal_spec väärtusega tagasi käivitab arg iga kord, kui shellifunktsioon käivitab või skripti käivitab.”.
- Signal_spec väärtusega eksima käivitab arg iga kord käsu tõrke korral.
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õksPüü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 9Kui 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.shJä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.