Ako poslať a chytiť SIGTERM v Bash a Pythone

Ako Poslat A Chytit Sigterm V Bash A Pythone



V Linuxe procesy medzi sebou komunikujú pomocou signálov. Signály fungujú ako softvérové ​​prerušenia, ktoré upozorňujú programy na rôzne udalosti alebo požiadavky. Napríklad, keď je spustený program, môžete poslať signál na ukončenie programu. Odoslaný signál môže spustiť rôzne akcie, ako je zastavenie vykonávania, ukončenie programu, obnovenie vykonávania atď.

Pri práci s Bash a Pythonom môžete poslať signál SIGTERM na jemné ukončenie bežiaceho procesu. Tento príspevok sa týka odosielania a chytania SIGTERM v Bash a Python.

Čo je PODMIENKA PODMIENKY

Unixové systémy majú tri kategórie signálov: systém, zariadenie a signály definované používateľom. Každý signál má celočíselnú hodnotu. Signál môžete spustiť zadaním jeho názvu alebo celočíselnej hodnoty.







SIGTERM je signál s celočíselnou hodnotou 15. Vykoná sa, keď chcete jemne ukončiť bežiaci proces. Nasleduje syntax na použitie SIGTERM v Bash:



zabiť CIEĽOVÝ TERMÍN < PID >

alebo

zabiť - pätnásť < PID >

Všetky dostupné signály môžete skontrolovať pomocou nasledujúceho príkazu:



zabiť -l





Ako poslať a chytiť SIGTERM v Bash a Pythone

Možno budete chcieť poslať a zachytiť SIGTERM v Bash a Pythone v rôznych prípadoch. Keď spustíte svoj program Bash alebo Python, môžete spustiť signál SIGTERM na zabitie programu. Máme rôzne príklady, aby sme pochopili, ako odosielate a zachytávate SIGTERM v Bash a Pythone.

1. Použitie skriptu Python

Keď používate Python 1.4 a najnovšie verzie, môžete použiť knižnicu signálov na odosielanie a zachytávanie SIGTERM. Importujte knižnicu do svojho programu a definujte, ako má váš program zachytávať a reagovať na rôzne signály. Knižnica signálov vám umožňuje vytvoriť obslužný program signálu na hlásenie celého čísla prijatého signálu. Potom môžete zaregistrovať zachytený signál a získať informácie o aktuálnom procese, ako je jeho PID. Uveďme príklad.



Máme skript Python, ktorý zachytáva celé číslo odosielaného signálu. Navyše zachytáva PID aktuálneho procesu.

Na nasledujúcom obrázku spustíme skript Python a máme cyklus while, ktorý sa spustí každých pár sekúnd. Na inom termináli môžeme poslať signál SIGTERM na zastavenie procesu zadaním PID, ktoré získame spustením skriptu Python:

Po odoslaní signálu SIGTERM si všimneme, že skript sa prestane vykonávať. Je to preto, že zachytáva celé číslo signálu. V tomto prípade vykonáme kill -15 pre signál SIGTERM. Signál zabíjania SIGTERM môžete odoslať aj pomocou kľúčového slova SIGTERM namiesto jeho celočíselnej hodnoty. Stále dostávame rovnaký výsledok.

Svoju úlohu Pythonu môžete spustiť aj pomocou nasledujúcej syntaxe:

python3 < scenár/práca > &

Na rozdiel od prvého spôsobu, keď pošleme SIGTERM pomocou tejto možnosti, môžeme vidieť, že ID úlohy sa vytlačí, keď sa úloha začne vykonávať. Keď ho zabijeme, dostaneme stav „hotovo“. SIGTERM možno odoslať zadaním jeho názvu alebo celého čísla.

2. Použitie Bash skriptu

Na zachytenie signálu pri vykonávaní Bash skriptu môžete použiť príkaz „trap“. V tomto príklade sme pridali príkaz „trap“ na zachytenie signálu SIGTERM. Skript je slučka „for“ na vykonanie príkazu „dátum“ tisíckrát, ak nie je odoslaný signál SIGTERM.

Pri vykonávaní Bash skriptu môžete odoslať signál SIGTERM stlačením tlačidla Ctrl + Z klávesy klávesnice. Príkaz „trap“ zachytí vysielaný signál a slučka „for“ sa prestane vykonávať. Dostanete výstup, ktorý potvrdí, že spustená úloha prijala signál SIGTERM a zastavila sa.

Takto posielate a chytíte SIGTERM v Bash.

Záver

Pri vykonávaní úlohy alebo programu môžete vysielať rôzne signály na dosiahnutie rôznych cieľov. SIGTERM sa vysiela na jemné zastavenie programu. Pre Python potrebujete obsluhu signálu na zachytenie signálu a môžete odoslať SIGTERM pomocou príkazu „kill“. Na zachytenie a odoslanie signálu SIGTERM môžete použiť príkaz „trap“ a klávesy klávesnice na Bash. Tento príspevok podrobne predstavil rôzne príklady, ako to dosiahnuť.