Kaip siųsti ir sugauti SIGTERM „Bash“ ir „Python“.

Kaip Siusti Ir Sugauti Sigterm Bash Ir Python



Linux sistemoje procesai bendrauja tarpusavyje naudodami signalus. Signalai veikia kaip programinės įrangos pertraukimai, pranešantys programoms apie įvairius įvykius ar užklausas. Pavyzdžiui, kai programa veikia, galite išsiųsti nužudymo signalą, kad išeitumėte iš programos. Siunčiamas signalas gali sukelti įvairius veiksmus, pvz., sustabdyti vykdymą, nutraukti programą, atnaujinti vykdymą ir pan.

Dirbdami su „Bash“ ir „Python“, galite siųsti SIGTERM signalą, kad tyliai nutrauktumėte veikimo procesą. Šis įrašas apima SIGTERM siuntimą ir gaudymą Bash ir Python.

Kas yra PASIrašymo terminas

Unix sistemos turi tris signalų kategorijas: sistemos, įrenginio ir vartotojo apibrėžtus signalus. Kiekvienas signalas turi sveikąjį skaičių. Signalą galite vykdyti nurodydami jo pavadinimą arba sveikojo skaičiaus reikšmę.





SIGTERM yra signalas, kurio sveikasis skaičius yra 15. Jis vykdomas, kai norima tyliai nutraukti vykdomą procesą. Toliau pateikiama sintaksė, skirta naudoti SIGTERM programoje Bash:



nužudyti TERM < PID >

arba

nužudyti - penkiolika < PID >

Galite patikrinti visus galimus signalus naudodami šią komandą:



nužudyti -l





Kaip siųsti ir sugauti SIGTERM „Bash“ ir „Python“.

Galbūt norėsite siųsti ir sugauti SIGTERM Bash ir Python įvairiais atvejais. Vykdydami „Bash“ arba „Python“ programą, galite vykdyti SIGTERM signalą, kad užmuštumėte programą. Turime įvairių pavyzdžių, kad suprastume, kaip siunčiate ir gaudote SIGTERM Bash ir Python.

1. Python scenarijaus naudojimas

Kai naudojate Python 1.4 ir naujausias versijas, galite naudoti signalų biblioteką, kad išsiųstumėte ir gautumėte SIGTERM. Importuokite biblioteką į savo programą, kad nustatytumėte, kaip programa turėtų užfiksuoti ir reaguoti į skirtingus signalus. Signalų biblioteka leidžia sukurti signalo tvarkyklę, kuri praneša gauto signalo sveikąjį skaičių. Tada galite užregistruoti užfiksuotą signalą ir gauti informaciją apie dabartinį procesą, pvz., jo PID. Pateikime pavyzdį.



Turime Python scenarijų, kuris sugauna sveikąjį išsiųsto signalo skaičių. Be to, jis sugauna dabartinio proceso PID.

Kitame paveikslėlyje vykdome Python scenarijų ir turime ciklą, kuris vykdomas kas kelias sekundes. Kitame terminale galime išsiųsti SIGTERM signalą, kad sustabdytume procesą, nurodydami PID, kurį gauname vykdydami Python scenarijų:

Kai išsiųsime SIGTERM signalą, pastebime, kad scenarijus nustoja vykdyti. Taip yra todėl, kad jis užfiksuoja sveikąjį signalo skaičių. Šiuo atveju SIGTERM signalui atliekame nužudymą -15. Taip pat galite siųsti SIGTERM nužudymo signalą naudodami raktinį žodį SIGTERM, o ne sveikąjį skaičių. Vis tiek gauname tą patį rezultatą.

Taip pat galite vykdyti Python užduotį naudodami šią sintaksę:

Python3 < scenarijus/darbas > &

Skirtingai nuo pirmojo metodo, kai siunčiame SIGTERM naudodami šią parinktį, matome, kad užduoties ID išspausdinamas, kai darbas pradedamas vykdyti. Kai jį nužudome, gauname statusą „atlikta“. SIGTERM gali būti siunčiamas nurodant jo pavadinimą arba sveikąjį skaičių.

2. Bash scenarijaus naudojimas

Galite naudoti komandą „spąstai“, kad gautumėte signalą vykdydami „Bash“ scenarijų. Šiame pavyzdyje pridėjome komandą „spąstai“, kad gautume SIGTERM signalą. Scenarijus yra „for“ kilpa, skirta tūkstantį kartų vykdyti komandą „data“, jei nesiunčiamas SIGTERM signalas.

Vykdydami Bash scenarijų, galite siųsti SIGTERM signalą paspausdami Ctrl + Z klaviatūros klavišai. Komanda „trap“ užfiksuoja perduotą signalą, o „for“ kilpa nustos vykdyti. Gausite išvestį, kuri patvirtins, kad vykdoma užduotis gavo SIGTERM signalą ir sustojo.

Taip siunčiate ir pagaunate SIGTERM Bash.

Išvada

Vykdydami užduotį ar programą galite siųsti skirtingus signalus, kad pasiektumėte skirtingus tikslus. SIGTERM siunčiamas norint švelniai sustabdyti programą. Jei naudojate Python, jums reikia signalo tvarkyklės, kad gautumėte signalą, ir galite siųsti SIGTERM naudodami komandą „nužudyti“. Norėdami užfiksuoti ir išsiųsti SIGTERM signalą, galite naudoti „trap“ komandą ir „Bash“ klaviatūros klavišus. Šiame įraše buvo pateikti įvairūs pavyzdžiai, kaip tai pasiekti.