Paano Magpadala at Mahuli ang SIGTERM sa Bash at Python

Paano Magpadala At Mahuli Ang Sigterm Sa Bash At Python



Sa Linux, ang mga proseso ay nakikipag-ugnayan sa isa't isa gamit ang mga signal. Ang mga signal ay kumikilos bilang mga interrupts ng software na nag-aabiso sa mga programa ng iba't ibang mga kaganapan o kahilingan. Halimbawa, kapag tumatakbo ang isang programa, maaari kang magpadala ng kill signal upang lumabas sa program. Ang signal na ipinadala ay maaaring mag-trigger ng iba't ibang mga aksyon tulad ng paghinto ng pagpapatupad, pagwawakas ng programa, pagpapatuloy ng pagpapatupad, atbp.

Kapag nagtatrabaho sa Bash at Python, maaari mong ipadala ang signal ng SIGTERM upang wakasan ang proseso ng pagtakbo nang mahina. Sinasaklaw ng post na ito ang tungkol sa pagpapadala at pagkuha ng SIGTERM sa Bash at Python.

Ano ang SIGN TERM

Ang mga sistema ng Unix ay may tatlong kategorya ng mga signal: system, device, at mga signal na tinukoy ng user. Ang bawat signal ay may integer na halaga. Maaari mong isagawa ang signal sa pamamagitan ng pagtukoy sa pangalan nito o sa halaga ng integer nito.







Ang SIGTERM ay isang senyales na may integer na halaga na 15. Ito ay isinasagawa kapag gusto mong wakasan ang isang proseso ng pagtakbo nang mahina. Ang sumusunod ay ang syntax para magamit ang SIGTERM sa Bash:



patayin ang TARGET TERM < PID >

o

pumatay - labinlima < PID >

Maaari mong suriin ang lahat ng magagamit na mga signal gamit ang sumusunod na command:



pumatay -l





Paano Magpadala at Mahuli ang SIGTERM sa Bash at Python

Baka gusto mong magpadala at mahuli ang SIGTERM sa Bash at Python sa iba't ibang pagkakataon. Kapag pinaandar mo ang iyong Bash o Python program, maaari mong i-execute ang SIGTERM signal para patayin ang program. Mayroon kaming iba't ibang mga halimbawa upang maunawaan kung paano mo ipinapadala at hinuhuli ang SIGTERM sa Bash at Python.

1. Paggamit ng Python Script

Kapag ginagamit ang Python 1.4 at pinakabagong mga bersyon, maaari mong gamitin ang signal library upang magpadala at mahuli ang SIGTERM. I-import ang library sa iyong program para tukuyin kung paano dapat makuha at tumugon ang iyong program sa iba't ibang signal. Hinahayaan ka ng signal library na lumikha ng signal handler upang iulat ang integer ng natanggap na signal. Maaari mong irehistro ang nakuhang signal at makuha ang impormasyon tungkol sa kasalukuyang proseso tulad ng PID nito. Magbigay tayo ng halimbawa.



Mayroon kaming script ng Python na nakakakuha ng integer ng ipinadalang signal. Bukod dito, nahuhuli nito ang PID ng kasalukuyang proseso.

Sa sumusunod na larawan, isinasagawa namin ang script ng Python at mayroong isang while loop na nagpapatupad bawat ilang segundo. Sa isa pang terminal, maaari naming ipadala ang signal ng SIGTERM upang patayin ang proseso sa pamamagitan ng pagtukoy sa PID na nakukuha namin mula sa pagpapatupad ng script ng Python:

Kapag naipadala na namin ang signal ng SIGTERM, napansin namin na huminto sa pag-execute ang script. Iyon ay dahil kinukuha nito ang signal integer. Sa kasong ito, isinasagawa namin ang kill -15 para sa signal ng SIGTERM. Maaari mo ring ipadala ang SIGTERM kill signal gamit ang SIGTERM keyword sa halip na ang integer value nito. Pareho pa rin tayong resulta.

Maaari mo ring isagawa ang iyong trabaho sa Python gamit ang sumusunod na syntax:

python3 < script/trabaho > &

Hindi tulad ng unang paraan, kapag ipinadala namin ang SIGTERM gamit ang opsyong ito, makikita namin na ang job ID ay naka-print kapag nagsimula ang trabaho. Pagkatapos natin itong patayin, makukuha natin ang katayuang 'tapos na'. Ang SIGTERM ay maaaring ipadala sa pamamagitan ng pagtukoy sa pangalan nito o sa integer nito.

2. Paggamit ng Bash Script

Maaari mong gamitin ang command na 'trap' upang makakuha ng signal kapag nagpapatupad ng isang Bash script. Sa halimbawang ito, idinagdag namin ang command na 'trap' upang mahuli ang signal ng SIGTERM. Ang script ay isang loop na 'para sa' upang maisagawa ang utos na 'petsa' ng isang libong beses kung walang ipinapadalang signal ng SIGTERM.

Kapag isinagawa ang script ng Bash, maaari mong ipadala ang signal ng SIGTERM sa pamamagitan ng pagpindot sa Ctrl + Z mga key ng keyboard. Kinukuha ng 'trap' command ang ipinadalang signal, at ang 'for' loop ay hihinto sa pag-execute. Makakakuha ka ng output na nagpapatunay na ang tumatakbong trabaho ay nakatanggap ng signal ng SIGTERM at huminto.

Ganyan ka magpadala at mahuli ang SIGTERM sa Bash.

Konklusyon

Maaari kang magpadala ng iba't ibang senyales upang makamit ang iba't ibang layunin kapag nagsasagawa ng trabaho o programa. Ang SIGTERM ay ipinadala upang ihinto ang isang programa nang mahina. Para sa Python, kailangan mo ng signal handler para makahuli ng signal, at maaari mong ipadala ang SIGTERM gamit ang 'kill' command. Maaari mong gamitin ang command na 'trap' at mga keyboard key sa Bash para makuha at ipadala ang signal ng SIGTERM. Ang post na ito ay nagpakita ng iba't ibang mga halimbawa kung paano makamit iyon nang detalyado.