Ukazi za Linux

Ukaz za lovljenje bash

Ukaz za lovljenje bash
Vgrajeni ukaz bash, ki se uporablja za izvajanje ukaza, ko lupina prejme kateri koli signal, se imenuje "past". Ko se zgodi kateri koli dogodek, bash pošlje obvestilo s katerim koli signalom. V bash je na voljo veliko signalov. Najpogostejši signal basha je SIGINT (prekinitev signala). Ko uporabnik pritisne CTRL + C, da prekine kateri koli postopek s terminala, se ta signal pošlje, da obvesti sistem.  V tej vadnici je razloženo, kako lahko z ukazom trap upravljate različne vrste signalov.

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.

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.

$ past

Ujeti pasti z možnostjo -l

Iz terminala zaženite naslednji ukaz, da se prikaže seznam vseh imen signalov s številko.

$ past -l

Izhod 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 9

Ko 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.sh

Naslednji 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.

Srednji gumb miške ne deluje v sistemu Windows 10
The srednji gumb miške vam pomaga, da se pomikate po dolgih spletnih straneh in zaslonih z veliko podatkov. Če se to ustavi, boste na koncu uporabili ...
Kako spremeniti levi in ​​desni gumb miške na računalniku z operacijskim sistemom Windows 10
Povsem normalno je, da so vse naprave računalniške miške ergonomsko zasnovane za desničarje. Na voljo pa so miške, ki so posebej zasnovane za levičarj...
Posnemajte klike miške tako, da v Windows 10 lebdite z miško Clickless Mouse
Uporaba miške ali tipkovnice v napačni drži čezmerne uporabe lahko povzroči veliko zdravstvenih težav, vključno s sevom, sindromom karpalnega kanala i...