Kuinka lähettää ja napata SIGTERM Bashissa ja Pythonissa

Kuinka Lahettaa Ja Napata Sigterm Bashissa Ja Pythonissa



Linuxissa prosessit kommunikoivat keskenään signaalien avulla. Signaalit toimivat ohjelmistokeskeytyksinä, jotka ilmoittavat ohjelmille erilaisista tapahtumista tai pyynnöistä. Esimerkiksi, kun ohjelma on käynnissä, voit lähettää tappamissignaalin poistuaksesi ohjelmasta. Lähetetty signaali voi laukaista erilaisia ​​toimintoja, kuten suorituksen pysäyttämisen, ohjelman lopettamisen, suorituksen jatkamisen jne.

Kun työskentelet Bashin ja Pythonin kanssa, voit lähettää SIGTERM-signaalin lopettaaksesi käynnissä olevan prosessin pehmeästi. Tämä viesti käsittelee SIGTERMin lähettämistä ja pyydystämistä Bashissa ja Pythonissa.

Mikä on SIGN TERM

Unix-järjestelmissä on kolme signaaliluokkaa: järjestelmä-, laite- ja käyttäjän määrittämät signaalit. Jokaisella signaalilla on kokonaislukuarvo. Voit suorittaa signaalin määrittämällä sen nimen tai kokonaisluvun.







SIGTERM on signaali, jonka kokonaislukuarvo on 15. Se suoritetaan, kun halutaan lopettaa käynnissä oleva prosessi pehmeästi. Seuraava on syntaksi SIGTERM-käyttöön Bashissa:



tappaa TERM < PID >

tai

tappaa - viisitoista < PID >

Voit tarkistaa kaikki käytettävissä olevat signaalit käyttämällä seuraavaa komentoa:



tappaa -l





Kuinka lähettää ja napata SIGTERM Bashissa ja Pythonissa

Voit halutessasi lähettää ja pyytää SIGTERM Bashissa ja Pythonissa eri tapauksissa. Kun suoritat Bash- tai Python-ohjelman, voit suorittaa SIGTERM-signaalin ohjelman tappamiseksi. Meillä on erilaisia ​​esimerkkejä ymmärtääksemme, kuinka SIGTERM lähetetään ja pyydetään Bashissa ja Pythonissa.

1. Python-komentosarjan käyttäminen

Python 1.4:ää ja uusimpia versioita käytettäessä voit käyttää signaalikirjastoa SIGTERM:n lähettämiseen ja tavoittamiseen. Tuo ohjelmasi kirjasto määrittääksesi, kuinka ohjelman tulee siepata erilaisia ​​signaaleja ja reagoida niihin. Signaalikirjaston avulla voit luoda signaalinkäsittelijän, joka raportoi vastaanotetun signaalin kokonaisluvun. Tämän jälkeen voit rekisteröidä siepatun signaalin ja saada tiedot nykyisestä prosessista, kuten sen PID:stä. Otetaan esimerkki.



Meillä on Python-skripti, joka saa kiinni lähetetyn signaalin kokonaisluvun. Lisäksi se saa kiinni nykyisen prosessin PID:n.

Seuraavassa kuvassa suoritamme Python-komentosarjan ja meillä on while-silmukka, joka suoritetaan muutaman sekunnin välein. Toisessa päätteessä voimme lähettää SIGTERM-signaalin prosessin lopettamiseksi määrittämällä PID:n, jonka saamme Python-komentosarjan suorittamisesta:

Kun lähetämme SIGTERM-signaalin, huomaamme, että komentosarja pysähtyy. Tämä johtuu siitä, että se kaappaa signaalin kokonaisluvun. Tässä tapauksessa suoritamme kill -15 SIGTERM-signaalille. Voit myös lähettää SIGTERM-tappisignaalin käyttämällä SIGTERM-avainsanaa sen kokonaisluvun sijaan. Saamme edelleen saman tuloksen.

Voit myös suorittaa Python-työsi käyttämällä seuraavaa syntaksia:

python3 < käsikirjoitus/työ > &

Toisin kuin ensimmäisessä menetelmässä, kun lähetämme SIGTERM tällä vaihtoehdolla, voimme nähdä, että työn tunnus tulostetaan, kun työ alkaa suorittaa. Kun olemme tappaneet sen, saamme 'valmis' -tilan. SIGTERM voidaan lähettää määrittämällä sen nimi tai kokonaisluku.

2. Bash-komentosarjan käyttäminen

Voit käyttää 'trap'-komentoa signaalin saamiseen, kun suoritat Bash-skriptiä. Tässä esimerkissä lisäsimme 'trap'-komennon saadaksemme SIGTERM-signaalin. Skripti on 'for'-silmukka, joka suorittaa 'date'-komennon tuhat kertaa, jos SIGTERM-signaalia ei lähetetä.

Kun suoritat Bash-skriptiä, voit lähettää SIGTERM-signaalin painamalla Ctrl + Z näppäimistön näppäimet. 'Trap'-komento kaappaa lähetetyn signaalin, ja 'for'-silmukka lopettaa suorittamisen. Saat lähdön, joka vahvistaa, että käynnissä oleva työ on vastaanottanut SIGTERM-signaalin ja pysähtynyt.

Näin lähetät ja nappaat SIGTERM Bashissa.

Johtopäätös

Voit lähettää erilaisia ​​signaaleja eri tavoitteiden saavuttamiseksi suorittaessasi työtä tai ohjelmaa. SIGTERM lähetetään pysäyttämään ohjelman pehmeästi. Pythonissa tarvitset signaalinkäsittelijän signaalin sieppaamiseen, ja voit lähettää SIGTERM-käskyn 'tapo'-komennolla. Voit käyttää Bashin trap-komentoa ja näppäimistön näppäimiä SIGTERM-signaalin sieppaamiseen ja lähettämiseen. Tässä postauksessa esitettiin erilaisia ​​esimerkkejä siitä, kuinka tämä saavutetaan yksityiskohtaisesti.