Hoe SIGTERM te verzenden en te vangen in Bash en Python

Hoe Sigterm Te Verzenden En Te Vangen In Bash En Python



In Linux communiceren processen met elkaar door middel van signalen. De signalen fungeren als software-onderbrekingen die de programma's op de hoogte stellen van verschillende gebeurtenissen of verzoeken. Als er bijvoorbeeld een programma draait, kun je een kill-signaal sturen om het programma af te sluiten. Het verzonden signaal kan verschillende acties activeren, zoals het stoppen van een uitvoering, het beëindigen van het programma, het hervatten van de uitvoering, enz.

Wanneer u met Bash en Python werkt, kunt u het SIGTERM-signaal verzenden om het lopende proces zachtjes te beëindigen. Dit bericht gaat over het verzenden en vangen van SIGTERM in Bash en Python.

Wat is SIGN TERM

Unix-systemen hebben drie categorieën signalen: systeem-, apparaat- en door de gebruiker gedefinieerde signalen. Elk signaal heeft een geheel getal. U kunt het signaal uitvoeren door de naam of de gehele waarde op te geven.







SIGTERM is een signaal met een geheel getal van 15. Het wordt uitgevoerd wanneer u een lopend proces zachtjes wilt beëindigen. Het volgende is de syntaxis om SIGTERM in Bash te gebruiken:



DOELTERMIJN doden < PID >

of

doden - vijftien < PID >

U kunt alle beschikbare signalen controleren met behulp van de volgende opdracht:



doden -l





Hoe SIGTERM te verzenden en te vangen in Bash en Python

Misschien wilt u in verschillende gevallen SIGTERM in Bash en Python verzenden en opvangen. Wanneer u uw Bash- of Python-programma uitvoert, kunt u het SIGTERM-signaal uitvoeren om het programma te beëindigen. We hebben verschillende voorbeelden om te begrijpen hoe je SIGTERM verzendt en opvangt in Bash en Python.

1. Een Python-script gebruiken

Wanneer u Python 1.4 en de nieuwste versies gebruikt, kunt u de signaalbibliotheek gebruiken om SIGTERM te verzenden en op te vangen. Importeer de bibliotheek in uw programma om te definiëren hoe uw programma verschillende signalen moet vastleggen en erop moet reageren. Met de signaalbibliotheek kunt u een signaalhandler maken om het gehele getal van het ontvangen signaal te rapporteren. U kunt dan het vastgelegde signaal registreren en informatie krijgen over het huidige proces, zoals de PID. Laten we een voorbeeld geven.



We hebben een Python-script dat het gehele getal van het verzonden signaal opvangt. Bovendien vangt het de PID van het huidige proces op.

In de volgende afbeelding voeren we het Python-script uit en hebben we een while-lus die om de paar seconden wordt uitgevoerd. Op een andere terminal kunnen we het SIGTERM-signaal verzenden om het proces te beëindigen door de PID op te geven die we krijgen door het Python-script uit te voeren:

Zodra we het SIGTERM-signaal hebben verzonden, merken we dat het script niet meer wordt uitgevoerd. Dat komt omdat het het gehele signaal vastlegt. In dit geval voeren we de kill -15 uit voor het SIGTERM-signaal. U kunt het SIGTERM-kill-signaal ook verzenden met het SIGTERM-sleutelwoord in plaats van de gehele waarde. We krijgen nog steeds hetzelfde resultaat.

U kunt uw Python-taak ook uitvoeren met de volgende syntaxis:

python3 < script/opdracht > &

In tegenstelling tot de eerste methode kunnen we, wanneer we de SIGTERM met deze optie verzenden, zien dat de taak-ID wordt afgedrukt wanneer de taak wordt uitgevoerd. Nadat we het hebben gedood, krijgen we de status 'klaar'. De SIGTERM kan worden verzonden door de naam of het gehele getal op te geven.

2. Een bash-script gebruiken

U kunt de opdracht 'trap' gebruiken om een ​​signaal op te vangen bij het uitvoeren van een Bash-script. In dit voorbeeld hebben we de opdracht 'trap' toegevoegd om het SIGTERM-signaal op te vangen. Het script is een 'for'-lus om het 'date'-commando duizend keer uit te voeren als er geen SIGTERM-signaal wordt verzonden.

Bij het uitvoeren van het Bash-script kunt u het SIGTERM-signaal verzenden door op de Ctrl+Z toetsenbord toetsen. De opdracht 'trap' vangt het verzonden signaal op en de uitvoering van de 'for'-lus stopt. U krijgt een uitvoer die bevestigt dat de lopende taak een SIGTERM-signaal heeft ontvangen en is gestopt.

Zo verzend en vang je SIGTERM in Bash.

Conclusie

Je kunt verschillende signalen afgeven om verschillende doelen te bereiken bij het uitvoeren van een taak of programma. SIGTERM wordt verzonden om een ​​programma zachtjes te stoppen. Voor Python heb je een signaalbehandelaar nodig om een ​​signaal op te vangen, en je kunt de SIGTERM verzenden met het commando 'kill'. U kunt de opdracht 'trap' en de toetsenbordtoetsen op Bash gebruiken om het SIGTERM-signaal vast te leggen en te verzenden. Dit bericht presenteerde verschillende voorbeelden van hoe u dat in detail kunt bereiken.