Szintaxis:
csapda [-lp] [[arg] jel_spec ...]vagy
csapda [akció] [jel]Kulcs | Leírás |
-l | Arra szolgál, hogy megjelenítse az összes jelnév listáját a megfelelő számmal. |
-o | A signal_spec jelparancs vagy trap parancs megjelenítésére szolgál. |
arg | Parancs végrehajtására szolgál, amikor a shell megkapja a jeleket. |
jel_spec | Ez tartalmazza a jel nevét vagy a jel számát. |
- Az arg érték nélküli vagy '-' arg értékű Trap parancs visszaállítja a megadott jel eredeti értékét.
- A „null” arg értékű Trap parancs figyelmen kívül hagyja a shell vagy a parancs által küldött megadott jelet.
- Egy signal_spec értékkel, kilépés (0) az argent végrehajtja, miután kilépett a héjból.
- Egy signal_spec értékkel hibakeresés minden egyes parancs előtt végrehajtja az arg-ot.
- Egy signal_spec az értékkel Visszatérés minden alkalommal végrehajtja az arg-ot, amikor egy shell függvény végrehajt, vagy ha egy szkript fut.”.
- Egy signal_spec az értékkel téved a parancs meghibásodásakor minden alkalommal végrehajtja az arg parancsot.
Trap parancs minden opció nélkül és arg
Futtassa a következő parancsot a terminálról az egyes feltételekhez társított összes parancs listájának megjelenítéséhez. Ha korábban nincs beállítva valamelyik „trap” parancs, akkor a következő parancs nem jelenít meg információkat.
$ csapdaTrap parancs -l opcióval
Futtassa a következő parancsot a terminálról az összes szignálnév listájának megjelenítéséhez.
$ csapda -lA fenti parancs kimenetén megjelenik a 64 számot tartalmazó jelek listája.
Állítsa be a trap parancsot az ERR és az EXIT számára
A következő első parancs egy 'trap' parancsot állít be, amely akkor fog végrehajtódni, ha bármilyen shell hiba jelentkezik, vagy ha a shell kilép. Ez a 'trap' parancs eltávolítja temp.txt fájlt az aktuális helyről. Az 'ls' paranccsal ellenőrizhetjük a temp.txt fájl létezik vagy nincs az aktuális helyen. Végül kijárat paranccsal lehet bezárni a terminált és végrehajtani a korábban beállított 'trap' parancsot.
$ trap 'rm temp.txt 'tévedés kilépés$ ls
$ exit
A fenti parancsok futtatása után a következő kimenet jelenik meg.
Most, ha a felhasználó kilépés után újra megnyitja a terminált, és végrehajtja az 'ls' parancsot temp.txt fájl nem létezik.
Állítsa be a „trap” parancsot a SIGUP, SIGQUIT és SIGKILL jelszámmal
A jel száma SIGUP, SIGQUIT és SIGKILL 1, 3 és 9. A következő első parancs csapdát állít ehhez a három jelhez. Amikor ezek közül bármelyik jel bekövetkezik, a „A Trap parancs végrehajtásra kerül”Kinyomtatja. Futtassa a következő parancsot a terminálról.
$ trap 'echo Trap parancs végrehajtva' 1 3 9Mikor nyomja meg a felhasználó Ctrl + C hogy létrehozza a jel hozzárendelését 'trap' paranccsal, akkor a 'visszhang' parancs a trap parancs végrehajtásra kerül, és a következő kimenet jelenik meg.
Állítsa be a 'trap' parancsot a SIGTERM számára egy szkriptben
SIGTERM jel a folyamat azonnali befejezésére szolgál az erőforrások felszabadításával. Hozzon létre egy bash fájlt, amelynek neve:csapda.SH"a következő kóddal. Végtelen ciklusra van deklarálva a szkriptben, amely folyamatosan nyomtat szöveget SIGTERM jel fordul elő. A felhasználónak meg kell nyomnia Ctrl + Z generálni SIGTERM jel.
csapda.SH
#!/ bin / bash# Állítson be csapdát a SIGINT és SIGTERM jelekhez
trap "echo A program leáll.Msgstr "SIGTERM JEL
#Display üzenet a SIGTERM előállításához
echo "Nyomja meg a Ctrl + Z gombot a folyamat leállításához"
# Inicializálja a számlálóváltozót, azaz
i = 1
#declare végtelen a ciklushoz
for (;;)
csinálni
# Üzenet nyomtatása számlálóval i
echo „a ciklus futása $ i-szer”
# A számláló beillesztése egyenként
((i ++))
Kész
Futtassa a szkriptet a következő parancs végrehajtásával, és a létrehozáshoz nyomja meg a Ctrl + Z billentyűkombinációt SIGTERM jel. A következő hasonló kimenet jelenik meg.
$ bash csapda.SH
Állítson be egy „trap” parancsot egy adott jel alapján történő függvény futtatásához
A 'trap' parancsot bármely felhasználó által definiált funkcióhoz társíthatja. Hozzon létre egy bash nevet trapfunc.SH és adja hozzá a következő szkriptet. Itt egy egyedi nevű függvény func () kijelentette, hogy egyszerű üzenetet nyomtat, "Feladat teljesítve". A bejövő hurok meghatározza az aktuális munkakönyv összes fájljának és mappájának listáját. 'csapda' A lista elején definiált parancs meghívja a függvényt, func () amikor a program leáll.
trapfunc.SH
#!/ bin / bash# Kilépéskor hívja a func funkciót
csapda func kijárat
# Nyújtsa be a függvényt
függvény func ()
visszhang "Feladat befejezve"
# Olvassa el az aktuális könyvtárlista fájljait és mappáit a ciklus használatával
mert én vagyok *
csinálni
"$ i" visszhang
Kész
Futtassa a parancsfájlt a terminálról.
Futtassa a szkriptet.
$ bash trapfunc.SHA következő kimenet azt mutatja, "Feladat teljesítve”Szöveget az aktuális könyvtár összes fájljának és mappájának kinyomtatása után kinyomtatják.
Következtetés
Ez az oktatóanyag bemutatja, hogyan lehet a „trap” parancsot használni a Linuxban bármilyen automatizált feladat végrehajtására generált jel alapján. Segít a felhasználóknak a különféle típusú hibák felkutatásában, és a parancs használatával megfelelő műveletek meghozatalában, amelyeket korábban meg lehet rendelni. Számos program vagy szkript rendel bizonyos forrásokat, amikor a rendszerben fut. Ha bármely futó program vagy szkript rendellenesen kilép vagy leáll, akkor az adott program által használt erőforrások blokkolva vannak. A 'trap' paranccsal megoldható ez a probléma. Az erőforrás-tisztítási feladat egyszerűen elvégezhető ezzel a paranccsal. Remélem, az olvasó világos képet kap a parancs használatáról, miután elolvasta ezt az oktatóanyagot.