Sintaksa:
past [-lp] [[arg] signal_spec…]ali
past [dejanje] [signal]Ključ | Opis |
-l | Uporablja se za prikaz seznama vseh imen signalov z ustrezno številko. |
-str | Uporablja se za prikaz signalnega ukaza ali ukaza pasti za signal_spec. |
arg | Uporablja se za izvajanje ukaza, ko lupina prejme signal (-e). |
signal_spec | Vsebuje ime ali številko signala. |
- Ukaz za prestrezanje brez vrednosti arg ali z vrednostjo arg. '-' bo ponastavil navedeni signal na prvotno vrednost.
- Ukaz trap z vrednostjo arg 'null' bo prezrl določen signal, ki ga pošlje lupina ali ukaz.
- Signal_spec z vrednostjo, izhod (0) bo izvedel arg po izhodu iz lupine.
- Signal_spec z vrednostjo odpravljanje napak bo izvedel arg pred vsakim posameznim ukazom.
- Signal_spec z vrednostjo vrnitev bo izvedel arg vsakič, ko se izvede funkcija lupine ali skript, ki ga zažene ".".
- Signal_spec z vrednostjo napaka bo izvedel arg vsakič ob okvari ukaza.
Trap ukaz brez možnosti in arg
Iz terminala zaženite naslednji ukaz, da se prikaže seznam vseh ukazov, povezanih z vsakim pogojem. Če pred tem ni nastavljen noben ukaz 'trap', naslednji ukaz ne bo prikazal nobenih informacij.
$ pastUjeti pasti z možnostjo -l
Iz terminala zaženite naslednji ukaz, da se prikaže seznam vseh imen signalov s številko.
$ past -lIzhod zgornjega ukaza bo prikazal seznam 64 signalov s številkami.
Nastavite ukaz pasti za ERR in EXIT
Naslednji prvi ukaz bo nastavil ukaz 'trap', ki se bo izvedel, ko pride do napake lupine ali izhod lupine. Ta ukaz "past" bo odstranil temp.txt datoteko s trenutne lokacije. Ukaz 'ls' se uporablja za preverjanje temp.txt datoteka obstaja ali ne obstaja na trenutni lokaciji. Nazadnje izhod ukaz se uporablja za zapiranje terminala in izvajanje ukaza 'trap', ki je nastavljen prej.
$ trap 'rm temp.txt 'napaka izhod$ ls
$ izhod
Po zagonu zgornjih ukazov se prikaže naslednji izhod.
Zdaj, če uporabnik po izhodu znova odpre terminal in nato izvede ukaz 'ls' temp.txt datoteka ne bo obstajala.
Nastavite ukaz 'trap' s številko signala SIGUP, SIGQUIT in SIGKILL
Številka signala PRIJAVA, PRIJAVA in SIGKILL so 1, 3 in 9. Naslednji prvi ukaz bo postavil past za te tri signale. Ko se pojavi kateri koli od teh signalov, se prikaže sporočilo »Izvede se ukaz Trap”Bo natisnjeno. Iz terminala zaženite naslednji ukaz.
$ trap 'echo Izveden ukaz pasti' 1 3 9Ko bo uporabnik pritisnil Ctrl + C za generiranje dodelitve signala z ukazom "trap" in nato 'odmev' ukaz trap ukaz se bo izvedel in prikazal se bo naslednji izhod.
V skriptu nastavite ukaz 'trap' za SIGTERM
SIGTERM signal se uporablja za takojšen zaključek procesa s sprostitvijo njegovih virov. Ustvari bash datoteko z imenom 'trapscript.sh"z naslednjo kodo. V skriptu je razglašena neskončna zanka for, ki bo besedilo neprekinjeno tiskala do SIGTERM signal. Uporabnik mora pritisniti Ctrl + Z ustvarjati SIGTERM signal.
trapscript.sh
#!/ bin / bash# Nastavite pasti za signale SIGINT in SIGTERM
trap "echo Program se zaključi."SIGTERM ZNAK
#Prikaži sporočilo za ustvarjanje SIGTERM
echo "Pritisnite Ctrl + Z ustavite postopek"
#Initializirajte števčno spremenljivko, tj
i = 1
#declare neskončno za zanko
za (;;)
naredi
# Natisni sporočilo s števcem i
echo "zagon zanke za $ i-krat"
# Števec povečajte za eno
((i ++))
Končano
Zaženite skript z izvajanjem naslednjega ukaza in pritisnite Ctrl + Z za ustvarjanje SIGTERM signal. Pojavili se bodo naslednji podobni izhodi.
$ bash trapscript.sh
Nastavite ukaz 'trap' za zagon funkcije, ki temelji na določenem signalu
Ukaz "past" lahko povežete s katero koli uporabniško določeno funkcijo. Ustvari bash z imenom trapfunc.sh in dodajte naslednji skript. Tu je poimenovana funkcija po meri func () je natisnjeno preprosto sporočilo, "Naloga je končana". Določena zanka je določena za branje in tiskanje seznama vseh datotek in map trenutnega delovnega imenika. "past" ukaz, ki je definiran na začetku seznama, bo poklical funkcijo, func () ko se program konča.
trapfunc.sh
#!/ bin / bash# Pokliči funkcijsko funkcijo ob izhodu
trap func izhod
# Prijavite funkcijo
funkcija func ()
echo "Naloga je končana"
# Preberite datoteke in mape trenutnega seznama imenikov s pomočjo zanke for
za i v *
naredi
odmev "$ i"
Končano
Zaženite skript s terminala.
Zaženite skript.
$ bash trapfunc.shNaslednji izhod to kaže, »Naloga je končana”Besedilo se natisne po tiskanju vseh datotek in map trenutnega imenika.
Zaključek
Ta vadnica prikazuje, kako lahko ukaz 'trap' v Linuxu izvaja katero koli avtomatizirano nalogo na podlagi ustvarjenega signala. Uporabnikom pomaga slediti različnim vrstam napak in pravilno ukrepati, ki jih je mogoče prej dodeliti s tem ukazom. Številni programi ali skripti med izvajanjem v sistemu dodelijo določene vire. Če kateri koli izvajani program ali skript nenavadno zapusti ali zaključi, so viri, ki jih uporablja ta program, blokirani. Za rešitev te težave lahko uporabite ukaz 'trap'. Nalogo čiščenja virov lahko enostavno izvedete s tem ukazom. Upam, da bo bralec po branju te vadnice dobil jasno predstavo o uporabi tega ukaza.