Kuidas Bashis ja Pythonis SIGTERMi saata ja püüda

Kuidas Bashis Ja Pythonis Sigtermi Saata Ja Puuda



Linuxis suhtlevad protsessid üksteisega signaalide abil. Signaalid toimivad tarkvarakatkestustena, mis teavitavad programme erinevatest sündmustest või taotlustest. Näiteks kui programm töötab, saate programmist väljumiseks saata tapmissignaali. Saadetud signaal võib käivitada erinevaid toiminguid, nagu täitmise peatamine, programmi lõpetamine, täitmise jätkamine jne.

Bashi ja Pythoniga töötades saate tööprotsessi pehmeks lõpetamiseks saata signaali SIGTERM. See postitus käsitleb SIGTERMi saatmist ja püüdmist Bashis ja Pythonis.

Mis on SIGN TERM

Unixi süsteemidel on kolm signaalikategooriat: süsteem, seade ja kasutaja määratud signaalid. Igal signaalil on täisarv. Saate signaali käivitada, määrates selle nime või täisarvu väärtuse.







SIGTERM on signaal täisarvuga 15. See käivitatakse, kui soovite töötavat protsessi pehmelt lõpetada. Järgmine on Bashis SIGTERMi kasutamise süntaks:



tappa SIHTTERM < PID >

või

tapa - viisteist < PID >

Kõiki saadaolevaid signaale saate kontrollida järgmise käsuga:



tappa -l





Kuidas Bashis ja Pythonis SIGTERMi saata ja püüda

Võimalik, et soovite saata ja püüda SIGTERMi Bashis ja Pythonis erinevatel juhtudel. Kui käivitate oma Bashi või Pythoni programmi, saate programmi hävitamiseks käivitada signaali SIGTERM. Meil on erinevaid näiteid, et mõista, kuidas saadate ja püüda SIGTERM Bashis ja Pythonis.

1. Pythoni skripti kasutamine

Python 1.4 ja uusimate versioonide kasutamisel saate SIGTERM-i saatmiseks ja püüdmiseks kasutada signaaliteeki. Importige oma programmi teek, et määrata, kuidas teie programm peaks erinevaid signaale püüdma ja neile reageerima. Signaaliteek võimaldab teil luua signaali töötleja, mis annab aru vastuvõetud signaali täisarvust. Seejärel saate salvestatud signaali registreerida ja saada teavet praeguse protsessi, näiteks selle PID kohta. Toome näite.



Meil on Pythoni skript, mis püüab kinni saadetud signaali täisarvu. Lisaks püüab see kinni praeguse protsessi PID-i.

Järgmisel pildil käivitame Pythoni skripti ja meil on ajatsükkel, mis käivitub iga paari sekundi järel. Teises terminalis saame protsessi peatamiseks saata signaali SIGTERM, määrates Pythoni skripti käivitamisel saadava PID-i:

Kui oleme SIGTERM-signaali saatnud, märkame, et skripti täitmine peatub. Seda seetõttu, et see jäädvustab signaali täisarvu. Sel juhul teostame SIGTERM signaali jaoks kill -15. Samuti saate saata SIGTERM-i tapmissignaali, kasutades selle täisarvu asemel märksõna SIGTERM. Saame ikka sama tulemuse.

Pythoni töö saate käivitada ka järgmise süntaksi abil:

python3 < stsenaarium/töö > &

Erinevalt esimesest meetodist, kui saadame SIGTERM-i selle valiku abil, näeme, et töö käivitamisel prinditakse välja töö ID. Pärast selle tapmist saame staatuse 'tehtud'. SIGTERM-i saab saata, määrates selle nime või täisarvu.

2. Bash-skripti kasutamine

Bashi skripti täitmisel signaali püüdmiseks võite kasutada käsku 'trap'. Selles näites lisasime SIGTERM-signaali püüdmiseks käsu 'trap'. Skript on 'for' tsükkel, mis käivitab käsu 'date' tuhat korda, kui SIGTERM signaali ei saadeta.

Bashi skripti täitmisel saate SIGTERM-i signaali saata, vajutades nuppu Ctrl + Z klaviatuuri klahvid. Käsk 'trap' hõivab edastatud signaali ja silmus 'for' lõpetab täitmise. Saate väljundi, mis kinnitab, et töötav töö on saanud SIGTERM signaali ja on peatunud.

Nii saate Bashis SIGTERMi saata ja püüda.

Järeldus

Töö või programmi täitmisel saate erinevate eesmärkide saavutamiseks saata erinevaid signaale. SIGTERM saadetakse programmi pehmeks peatamiseks. Pythoni jaoks vajate signaali püüdmiseks signaali töötlejat ja saate saata SIGTERM-i käsuga 'kill'. SIGTERM-signaali hõivamiseks ja saatmiseks saate Bashis kasutada käsku 'trap' ja klaviatuuriklahve. See postitus tutvustas erinevaid näiteid selle kohta, kuidas seda üksikasjalikult saavutada.