Syntax:
trap [-lp] [[arg] signal_spec…]alebo
pasca [akcia] [signál]Kľúč | Popis |
-l | Slúži na zobrazenie zoznamu všetkých mien signálov s príslušným číslom. |
-p | Používa sa na zobrazenie príkazu signálu alebo príkazu trapu pre signal_spec. |
arg | Používa sa na vykonanie príkazu, keď shell prijme signál (signály). |
signal_spec | Obsahuje názov signálu alebo číslo signálu. |
- Príkaz Trap bez hodnoty arg alebo s hodnotou „-“ arg nastaví zadaný signál na pôvodnú hodnotu.
- Príkaz Trap s hodnotou 'null' arg bude ignorovať zadaný signál odoslaný shellom alebo príkazom.
- Signal_spec s hodnotou, výstup (0) po výstupe z shellu vykoná arg.
- Signal_spec s hodnotou ladiť vykoná arg pred každým jedným príkazom.
- Signal_spec s hodnotou návrat vykoná arg vždy, keď sa vykoná funkcia shellu alebo skript spustený „.“.
- Signal_spec s hodnotou omyl vykoná arg vždy pri zlyhaní príkazu.
Trap príkaz bez akejkoľvek možnosti a arg
Spustením nasledujúceho príkazu z terminálu zobrazíte zoznam všetkých príkazov spojených s každou podmienkou. Ak nie je nastavený žiadny príkaz „trap“, potom nasledujúci príkaz nezobrazí žiadne informácie.
$ pascaPríkaz Trap s voľbou -l
Spustením nasledujúceho príkazu z terminálu zobrazte zoznam všetkých mien signálov s číslom.
$ trap -lNa výstupe vyššie uvedeného príkazu sa zobrazí zoznam 64 signálov s číslami.
Nastaviť príkaz trap pre ERR a EXIT
Nasledujúci prvý príkaz nastaví príkaz „trap“, ktorý sa vykoná, keď dôjde k chybe shellu alebo dôjde k jeho opusteniu. Tento príkaz „trap“ odstráni tepl.TXT súbor z aktuálneho umiestnenia. Príkaz 'ls' sa používa na kontrolu tepl.TXT súbor v aktuálnom umiestnení existuje alebo nie. Nakoniec východ príkaz sa používa na zatvorenie terminálu a vykonanie príkazu 'trap', ktorý bol nastavený predtým.
$ trap 'rm tepl.txt 'err exit$ ls
$ výstup
Po vykonaní vyššie uvedených príkazov sa objaví nasledujúci výstup.
Teraz, ak používateľ po ukončení znova otvorí terminál a vykoná príkaz „ls“ tepl.TXT súbor nebude existovať.
Nastavte príkaz „trap“ s číslom signálu SIGUP, SIGQUIT a SIGKILL
Číslo signálu SIGUP, SIGQUIT a SIGKILL sú 1, 3 a 9. Nasledujúci prvý príkaz nastaví pascu pre tieto tri signály. Keď sa vyskytne ktorýkoľvek z týchto signálov, zobrazí sa správa „Je vykonaný príkaz Trap”Sa vytlačí. Spustite nasledujúci príkaz z terminálu.
$ trap 'príkaz echo Trap vykonaný' 1 3 9Keď užívateľ stlačí Ctrl + C vygeneruje signál priradený príkazom 'trap' a potom „ozvena“ vykoná sa príkaz trap a zobrazí sa nasledujúci výstup.
Nastavte príkaz „trap“ pre SIGTERM v skripte
SIGTERM signál sa používa na okamžité ukončenie procesu uvoľnením jeho zdrojov. Vytvorte bash súbor s názvom 'trapscript.š„s nasledujúcim kódom. V skripte je deklarovaná slučka nekonečna for, ktorá bude tlačiť text nepretržite až do SIGTERM dôjde k signálu. Užívateľ musí stlačiť Ctrl + Z generovať SIGTERM signál.
trapscript.š
#!/ bin / bash# Pripravte pascu na signály SIGINT a SIGTERM
trap "echo Program je ukončený.„SIGTERM SIGINT
#Display message to generate SIGTERM
echo "Stlačením Ctrl + Z zastavte proces"
# Inicializovať premennú počítadla, t.j
i = 1
#declare nekonečno pre slučku
pre (;;)
robiť
#Tlačiť správu s počítadlom i
echo „spustenie slučky $ i-krát“
# Zvýšiť počítadlo o jednu
((i ++))
hotový
Spustite skript vykonaním nasledujúceho príkazu a vygenerujte ho pomocou klávesovej skratky Ctrl + Z SIGTERM signál. Zobrazí sa nasledujúci podobný výstup.
$ bash trapscript.š
Nastavením príkazu „trap“ spustíte funkciu na základe konkrétneho signálu
Príkaz „trap“ môžete priradiť k ľubovoľnej užívateľom definovanej funkcii. Vytvorte bash s názvom trapfunc.š a pridajte nasledujúci skript. Tu sa nazýva vlastná funkcia func () je deklarované na tlač jednoduchej správy, „Úloha dokončená“. Smyčka for-in je definovaná na čítanie a tlač zoznamu všetkých súborov a priečinkov aktuálneho pracovného adresára. „pasca“ príkaz, ktorý je definovaný na začiatku zoznamu, zavolá funkciu, func () keď sa program ukončí.
trapfunc.š
#!/ bin / bash# Zavolajte funkčnú funkciu na výstupe
výstup z pasce
# Deklarujte funkciu
function func ()
echo „Úloha dokončená“
# Čítajte súbory a adresáre aktuálneho zoznamu adresárov pomocou cyklu for
pre i v *
robiť
ozvena „$ i“
hotový
Spustite skript z terminálu.
Spustite skript.
$ bash trapfunc.šNasledujúci výstup to ukazuje, „Úloha dokončená”Text sa vytlačí po vytlačení všetkých súborov a priečinkov aktuálneho adresára.
Záver
Tento výukový program ukazuje, ako možno príkaz „trap“ v systéme Linux použiť na vykonanie akejkoľvek automatizovanej úlohy na základe vygenerovaného signálu. Pomáha používateľom vystopovať rôzne typy chýb a vykonať správne akcie, ktoré je možné predtým priradiť pomocou tohto príkazu. Mnoho programov alebo skriptov prideľuje pri behu v systéme určité konkrétne zdroje. Ak sa ktorýkoľvek bežiaci program alebo skript neobvykle ukončí alebo ukončí, prostriedky použité týmto programom sú blokované. Na vyriešenie tohto problému možno použiť príkaz 'trap'. Úloha čistenia zdrojov sa dá ľahko vykonať pomocou tohto príkazu. Dúfam, že čitateľ získa jasnú predstavu o použití tohto príkazu po prečítaní tohto tutoriálu.