Sintaksė:
gaudyklė [-lp] [[arg] signalo_spec ...]arba
spąstai [veiksmas] [signalas]Raktas | apibūdinimas |
-l | Jis naudojamas rodyti visų signalų pavadinimų sąrašą su atitinkamu numeriu. |
-p | Jis naudojamas norint parodyti signalo komandą arba spąstų komandą signal_spec. |
arg | Jis naudojamas komandai vykdyti, kai apvalkalas gauna signalą (-us). |
signalo_spec | Jame yra signalo pavadinimas arba signalo numeris. |
- Spąstų komanda be arg reikšmės arba su „-“ arg reikšme atstatys nurodytą signalą į pradinę reikšmę.
- Spąstų komanda su „null“ arg reikšme ignoruos nurodytą signalą, kurį siunčia apvalkalas arba komanda.
- Signalo_spec su verte, išėjimas (0) vykdys argą išėjęs iš apvalkalo.
- Signalo_spec su verte derinti vykdys arg prieš kiekvieną komandą.
- Signalo_spec su verte grįžti vykdys arg kiekvieną kartą, kai vykdoma apvalkalo funkcija arba scenarijus, kurį vykdo „.“.
- Signalo_spec su verte klysti vykdys arg kiekvieną kartą, kai nepavyks komandai.
Spąstų komanda be jokių parinkčių ir arg
Paleiskite šią komandą iš terminalo, kad būtų rodomas visų komandų, susijusių su kiekviena sąlyga, sąrašas. Jei anksčiau nebuvo nustatyta „trap“ komanda, ši komanda nerodys jokios informacijos.
$ spąstaiSpąstų komanda su -l parinktimi
Paleiskite šią komandą iš terminalo, kad būtų parodytas visų signalų pavadinimų su skaičiumi sąrašas.
$ spąstai -lMinėtos komandos išvestis parodys 64 signalų su skaičiais sąrašą.
Nustatykite ERR ir EXIT spąstų komandą
Ši pirmoji komanda nustatys komandą „trap“, kuri bus vykdoma įvykus bet kokiai apvalkalo klaidai arba išėjus iš apvalkalo. Ši komanda „spąstai“ bus pašalinta temp.txt failą iš dabartinės vietos. "ls" komanda naudojama norint patikrinti temp.txt failas yra arba nėra dabartinėje vietoje. Galiausiai išėjimas komanda naudojama norint uždaryti terminalą ir įvykdyti anksčiau nustatytą komandą „trap“.
$ trap 'rm temp.txt 'klaida išeiti$ ls
$ išėjimas
Paleidus minėtas komandas pasirodys toks išvestis.
Dabar, jei vartotojas dar kartą atidaro terminalą po išėjimo ir vykdo komandą „ls“ temp.txt failo nebus.
Nustatykite komandą „trap“ su signalo numeriu SIGUP, SIGQUIT ir SIGKILL
Signalo numeris SIGUP, SIGQUIT ir SIGKILL yra 1, 3 ir 9. Ši pirmoji komanda nustatys šių trijų signalų spąstus. Kai atsiras bet kuris iš šių signalų, pranešimas „Vykdoma spąstų komanda“Atspausdins. Paleiskite šią komandą iš terminalo.
$ trap 'echo Trap komanda įvykdyta' 1 3 9Kada vartotojas paspaus „Ctrl“ + C generuoti signalo priskyrimą „trap“ komanda, tada „aidas“ komanda „trap“ vykdys komandą ir pasirodys toks išvestis.
Scenarijuje nustatykite komandą „trap“ SIGTERM
SIGTERMAS signalas naudojamas nedelsiant nutraukti procesą išlaisvinant jo išteklius. Sukurkite „bash“ failą pavadinimu „trapscript.sh"su tokiu kodu. Begalinis ciklas yra paskelbtas scenarijuje, kuris nuolat spausdins tekstą iki SIGTERMAS atsiranda signalas. Vartotojas turi paspausti „Ctrl“ + Z generuoti SIGTERMAS signalas.
trapscript.sh
#!/ bin / bash# Nustatykite SIGINT ir SIGTERM signalų gaudyklę
spąstų aidas Programa nutraukiama."SIGTERM SIGINT
#Display pranešimas, kad sugeneruotumėte SIGTERM
echo "Paspauskite Ctrl + Z sustabdyti procesą"
# Inicializuokite skaitiklio kintamąjį, t
i = 1
#declare begalinis už kilpą
dėl(;;)
padaryti
#Spausdinti pranešimą su skaitikliu i
aidas „ciklo vykdymas $ i kartus“
#Inkreto skaitiklis po vieną
((i ++))
padaryta
Paleiskite scenarijų vykdydami šią komandą ir paspauskite Ctrl + Z, kad sugeneruotumėte SIGTERMAS signalas. Bus rodoma tokia panaši išvestis.
$ bash užrašas.sh
Norėdami paleisti funkciją pagal konkretų signalą, nustatykite komandą „trap“
Komandą „trap“ galite susieti su bet kuria vartotojo apibrėžta funkcija. Sukurkite bash pavadinimu trapfunc.sh ir pridėkite šį scenarijų. Čia pasirinkta funkcija pavadinta func () deklaruojama spausdinti paprastą pranešimą, „Užduotis baigta“. „For-in“ kilpa yra skirta skaityti ir atsispausdinti visų dabartinio darbo katalogo failų ir aplankų sąrašą. „spąstai“ komanda, apibrėžta sąrašo pradžioje, iškvies funkciją, func () kai programa baigsis.
trapfunc.sh
#!/ bin / bash# Išeidami skambinkite „func“ funkcija
spąstai func išėjimas
# Paskelbkite funkciją
funkcija func ()
aidas „Užduotis baigta“
# Perskaitykite dabartinio katalogų sąrašo failus ir aplankus naudodami ciklą
už aš *
padaryti
aidas „$ i“
padaryta
Paleiskite scenarijų iš terminalo.
Paleiskite scenarijų.
$ bash trapfunc.shŠis išvestis rodo, kad, „Užduotis atlikta“Tekstas spausdinamas išspausdinus visus dabartinio katalogo failus ir aplankus.
Išvada
Ši pamoka parodo, kaip „trap“ komandą galima naudoti sistemoje „Linux“ atliekant bet kokią automatinę užduotį, pagrįstą sugeneruotu signalu. Tai padeda vartotojams atsekti įvairių tipų klaidas ir tinkamai atlikti veiksmus, kuriuos galima priskirti anksčiau naudojant šią komandą. Daugelis programų ar scenarijų, vykdydami sistemą, paskirsto tam tikrus išteklius. Jei kuri nors vykdoma programa ar scenarijus išeina arba nutrūksta neįprastai, tos programos naudojami ištekliai blokuojami. Šiai problemai išspręsti gali būti naudojama komanda „trap“. Išteklių valymo užduotį galima lengvai atlikti naudojant šią komandą. Tikiuosi, skaitytojas, perskaitęs šią pamoką, gaus aiškų supratimą apie šios komandos naudojimą.