Kako poslati i uhvatiti SIGTERM u Bashu i Pythonu

Kako Poslati I Uhvatiti Sigterm U Bashu I Pythonu



U Linuxu procesi međusobno komuniciraju pomoću signala. Signali djeluju kao softverski prekidi koji obavještavaju programe o različitim događajima ili zahtjevima. Na primjer, kada je program pokrenut, možete poslati signal za izlazak iz programa. Signal koji se šalje može pokrenuti različite radnje kao što su zaustavljanje izvršenja, prekid programa, nastavak izvršenja itd.

Kada radite s Bashom i Pythonom, možete poslati signal SIGTERM da biste tiho prekinuli pokrenuti proces. Ovaj post govori o slanju i hvatanju SIGTERM-a u Bashu i Pythonu.

Što je SIGN TERM

Unix sustavi imaju tri kategorije signala: sustav, uređaj i korisnički definirani signali. Svaki signal ima cjelobrojnu vrijednost. Signal možete izvršiti navođenjem njegovog naziva ili njegove vrijednosti cijelog broja.







SIGTERM je signal s cjelobrojnom vrijednošću 15. Izvršava se kada želite tiho prekinuti pokrenuti proces. Slijedi sintaksa za korištenje SIGTERM-a u Bashu:



ubiti CILJNI POJAM < PID >

ili

ubiti - petnaest < PID >

Možete provjeriti sve dostupne signale pomoću sljedeće naredbe:



ubiti -l





Kako poslati i uhvatiti SIGTERM u Bashu i Pythonu

Možda želite poslati i uhvatiti SIGTERM u Bashu i Pythonu u različitim instancama. Kada izvršavate svoj Bash ili Python program, možete izvršiti signal SIGTERM da ubijete program. Imamo različite primjere da bismo razumjeli kako šaljete i hvatate SIGTERM u Bashu i Pythonu.

1. Korištenje Python skripte

Kada koristite Python 1.4 i najnovije verzije, možete koristiti biblioteku signala za slanje i hvatanje SIGTERM-a. Uvezite biblioteku u svoj program da definirate kako bi vaš program trebao uhvatiti različite signale i reagirati na njih. Biblioteka signala omogućuje vam stvaranje rukovatelja signalima za izvješćivanje o cijelom broju primljenog signala. Zatim možete registrirati snimljeni signal i dobiti informacije o trenutnom procesu kao što je njegov PID. Navedimo primjer.



Imamo Python skriptu koja hvata cijeli broj poslanog signala. Štoviše, hvata PID trenutnog procesa.

Na sljedećoj slici izvršavamo Python skriptu i imamo while petlju koja se izvršava svakih nekoliko sekundi. Na drugom terminalu možemo poslati signal SIGTERM da prekinemo proces navođenjem PID-a koji dobivamo izvršavanjem Python skripte:

Nakon što pošaljemo signal SIGTERM, primijetit ćemo da se skripta prestaje izvršavati. To je zato što hvata cijeli broj signala. U ovom slučaju, izvršavamo kill -15 za signal SIGTERM. Također možete poslati SIGTERM kill signal koristeći ključnu riječ SIGTERM umjesto njezine cjelobrojne vrijednosti. I dalje dobivamo isti rezultat.

Također možete izvršiti svoj Python posao koristeći sljedeću sintaksu:

python3 < scenarij/posao > i

Za razliku od prve metode, kada šaljemo SIGTERM koristeći ovu opciju, možemo vidjeti da se ID posla ispisuje kada posao počne da se izvršava. Nakon što ga ubijemo, dobivamo status 'gotovo'. SIGTERM se može poslati navođenjem njegovog imena ili cijelog broja.

2. Korištenje Bash skripte

Možete koristiti naredbu 'trap' za hvatanje signala prilikom izvršavanja Bash skripte. U ovom smo primjeru dodali naredbu 'trap' za hvatanje signala SIGTERM. Skripta je 'for' petlja za izvršavanje naredbe 'date' tisuću puta ako se ne pošalje signal SIGTERM.

Prilikom izvršavanja Bash skripte, možete poslati signal SIGTERM pritiskom na Ctrl + Z tipke tipkovnice. Naredba 'trap' hvata odaslani signal, a petlja 'for' prestaje s izvođenjem. Dobit ćete izlaz koji potvrđuje da je tekući posao primio signal SIGTERM i da je zaustavljen.

Tako šaljete i hvatate SIGTERM u Bashu.

Zaključak

Možete slati različite signale za postizanje različitih ciljeva prilikom izvršavanja posla ili programa. SIGTERM se šalje za tiho zaustavljanje programa. Za Python vam je potreban rukovatelj signalom da biste uhvatili signal, a možete poslati SIGTERM pomoću naredbe 'kill'. Možete koristiti naredbu 'trap' i tipke na tipkovnici na Bashu za snimanje i slanje signala SIGTERM. Ovaj post detaljno je predstavio različite primjere kako to postići.