Sådan sender og fanger SIGTERM i Bash og Python

Sadan Sender Og Fanger Sigterm I Bash Og Python



I Linux kommunikerer processer med hinanden ved hjælp af signaler. Signalerne fungerer som softwareafbrydelser, der giver programmerne besked om forskellige hændelser eller anmodninger. For eksempel, når et program kører, kan du sende et dræbningssignal for at afslutte programmet. Signalet, der sendes, kan udløse forskellige handlinger, såsom at stoppe en eksekvering, afslutte programmet, genoptage eksekveringen osv.

Når du arbejder med Bash og Python, kan du sende SIGTERM-signalet for at afslutte den kørende proces blødt. Dette indlæg handler om at sende og fange SIGTERM i Bash og Python.

What Is SIGTERM

Unix-systemer har tre kategorier af signaler: system, enhed og brugerdefinerede signaler. Hvert signal har en heltalsværdi. Du kan udføre signalet ved at angive dets navn eller dets heltalsværdi.







SIGTERM er et signal med en heltalsværdi på 15. Det udføres, når du ønsker at afslutte en kørende proces blødt. Følgende er syntaksen for at bruge SIGTERM i Bash:



kill -SIGTERM < PID >

eller

dræbe - femten < PID >

Du kan kontrollere alle tilgængelige signaler ved hjælp af følgende kommando:



dræbe -l





Sådan sender og fanger SIGTERM i Bash og Python

Du vil måske sende og fange SIGTERM i Bash og Python i forskellige tilfælde. Når du udfører dit Bash- eller Python-program, kan du udføre SIGTERM-signalet for at dræbe programmet. Vi har forskellige eksempler til at forstå, hvordan du sender og fanger SIGTERM i Bash og Python.

1. Brug af et Python-script

Når du bruger Python 1.4 og nyeste versioner, kan du bruge signalbiblioteket til at sende og fange SIGTERM. Importer biblioteket i dit program for at definere, hvordan dit program skal fange og reagere på forskellige signaler. Signalbiblioteket lader dig oprette en signalbehandler til at rapportere det modtagne signals heltal. Du kan derefter registrere det opfangede signal og få oplysninger om den aktuelle proces, såsom dens PID. Lad os give et eksempel.



Vi har et Python-script, der fanger det sendte signals heltal. Desuden fanger den PID af den aktuelle proces.

I det følgende billede udfører vi Python-scriptet og har en while-løkke, der udføres med få sekunders mellemrum. På en anden terminal kan vi sende SIGTERM-signalet for at dræbe processen ved at angive den PID, som vi får ved at udføre Python-scriptet:

Når vi sender SIGTERM-signalet, bemærker vi, at scriptet holder op med at udføre. Det er fordi det fanger signalets heltal. I dette tilfælde udfører vi kill -15 for SIGTERM-signalet. Du kan også sende SIGTERM kill-signalet ved at bruge SIGTERM nøgleordet i stedet for dets heltalsværdi. Vi får stadig det samme resultat.

Du kan også udføre dit Python-job ved hjælp af følgende syntaks:

python3 < manuskript/job > &

I modsætning til den første metode, når vi sender SIGTERM ved hjælp af denne mulighed, kan vi se, at job-id'et udskrives, når jobbet begynder at udføre. Når vi har dræbt det, får vi statussen 'færdig'. SIGTERM kan sendes ved at angive dets navn eller dets heltal.

2. Brug af et Bash-script

Du kan bruge kommandoen 'trap' til at fange et signal, når du udfører et Bash-script. I dette eksempel tilføjede vi kommandoen 'trap' for at fange SIGTERM-signalet. Scriptet er en 'for'-løkke til at udføre 'dato'-kommandoen tusind gange, hvis der ikke sendes noget SIGTERM-signal.

Når du udfører Bash-scriptet, kan du sende SIGTERM-signalet ved at trykke på Ctrl + Z tastatur taster. 'Trap'-kommandoen fanger det transmitterede signal, og 'for'-løkken vil holde op med at udføre. Du får en udgang, som bekræfter, at det kørende job har modtaget et SIGTERM-signal og er stoppet.

Sådan sender og fanger du SIGTERM i Bash.

Konklusion

Du kan sende forskellige signaler for at opnå forskellige mål, når du udfører et job eller et program. SIGTERM sendes for at stoppe et program blødt. Til Python har du brug for en signalhandler for at fange et signal, og du kan sende SIGTERM ved at bruge kommandoen 'kill'. Du kan bruge 'trap'-kommandoen og tastaturtasterne på Bash til at fange og sende SIGTERM-signalet. Dette indlæg præsenterede forskellige eksempler på, hvordan man opnår det i detaljer.