Kā nosūtīt un noķert SIGTERM programmās Bash un Python

Ka Nosutit Un Nokert Sigterm Programmas Bash Un Python



Operētājsistēmā Linux procesi sazinās savā starpā, izmantojot signālus. Signāli darbojas kā programmatūras pārtraukumi, kas paziņo programmām par dažādiem notikumiem vai pieprasījumiem. Piemēram, kad programma darbojas, varat nosūtīt iznīcināšanas signālu, lai izietu no programmas. Nosūtītais signāls var izraisīt dažādas darbības, piemēram, izpildes apturēšanu, programmas pārtraukšanu, izpildes atsākšanu utt.

Strādājot ar Bash un Python, varat nosūtīt SIGTERM signālu, lai klusi pārtrauktu darbības procesu. Šī ziņa attiecas uz SIGTERM nosūtīšanu un nozveju programmās Bash un Python.

Kas ir SIGN TERM

Unix sistēmām ir trīs signālu kategorijas: sistēmas, ierīces un lietotāja definēti signāli. Katram signālam ir vesela skaitļa vērtība. Signālu var izpildīt, norādot tā nosaukumu vai vesela skaitļa vērtību.







SIGTERM ir signāls ar veselu skaitļa vērtību 15. Tas tiek izpildīts, ja vēlaties klusi pārtraukt darbības procesu. Tālāk ir norādīta sintakse, lai izmantotu SIGTERM programmā Bash:



nogalināt MĒRĶA TERM < PID >

vai

nogalināt - piecpadsmit < PID >

Varat pārbaudīt visus pieejamos signālus, izmantojot šo komandu:



nogalināt -l





Kā nosūtīt un noķert SIGTERM programmās Bash un Python

Varat nosūtīt un noķert SIGTERM Bash un Python dažādos gadījumos. Palaižot savu Bash vai Python programmu, varat izpildīt SIGTERM signālu, lai programmu iznīcinātu. Mums ir dažādi piemēri, lai saprastu, kā sūtīt un noķert SIGTERM programmās Bash un Python.

1. Python skripta izmantošana

Izmantojot Python 1.4 un jaunākās versijas, varat izmantot signālu bibliotēku, lai nosūtītu un noķertu SIGTERM. Importējiet bibliotēku savā programmā, lai noteiktu, kā programmai ir jāuztver dažādi signāli un jāreaģē uz tiem. Signālu bibliotēka ļauj izveidot signālu apstrādātāju, lai ziņotu par saņemtā signāla veselo skaitli. Pēc tam varat reģistrēt uzņemto signālu un iegūt informāciju par pašreizējo procesu, piemēram, tā PID. Sniegsim piemēru.



Mums ir Python skripts, kas uztver nosūtītā signāla veselo skaitli. Turklāt tas uztver pašreizējā procesa PID.

Nākamajā attēlā mēs izpildām Python skriptu, un tajā ir cilpa, kas tiek izpildīta ik pēc dažām sekundēm. Citā terminālī mēs varam nosūtīt SIGTERM signālu, lai apturētu procesu, norādot PID, ko iegūstam, izpildot Python skriptu:

Kad esam nosūtījuši SIGTERM signālu, mēs pamanām, ka skripts tiek pārtraukts. Tas ir tāpēc, ka tas uztver signāla veselu skaitli. Šajā gadījumā SIGTERM signālam mēs izpildām kill -15. Varat arī nosūtīt SIGTERM nogalināšanas signālu, izmantojot atslēgvārdu SIGTERM, nevis tā veselo skaitļu vērtību. Mēs joprojām iegūstam to pašu rezultātu.

Varat arī izpildīt savu Python darbu, izmantojot šādu sintaksi:

python3 < scenārijs/darbs > &

Atšķirībā no pirmās metodes, kad mēs nosūtām SIGTERM, izmantojot šo opciju, mēs varam redzēt, ka darba ID tiek izdrukāts, kad darbs sākas. Kad mēs to nogalinām, mēs iegūstam statusu “pabeigts”. SIGTERM var nosūtīt, norādot tā nosaukumu vai veselu skaitli.

2. Bash skripta izmantošana

Varat izmantot komandu “trap”, lai uztvertu signālu, izpildot Bash skriptu. Šajā piemērā mēs pievienojām komandu “slazds”, lai uztvertu SIGTERM signālu. Skripts ir “for” cilpa, lai izpildītu komandu “date” tūkstoš reižu, ja netiek nosūtīts SIGTERM signāls.

Izpildot Bash skriptu, varat nosūtīt SIGTERM signālu, nospiežot Ctrl+Z tastatūras taustiņi. Komanda “trap” uztver pārraidīto signālu, un cilpa “for” tiks pārtraukta. Jūs saņemsiet izvadi, kas apstiprina, ka notiekošais darbs ir saņēmis SIGTERM signālu un ir apstājies.

Tādā veidā jūs nosūtāt un noķerat SIGTERM programmā Bash.

Secinājums

Veicot darbu vai programmu, varat nosūtīt dažādus signālus, lai sasniegtu dažādus mērķus. SIGTERM tiek nosūtīts, lai klusi apturētu programmu. Python ir nepieciešams signāla apstrādātājs, lai uztvertu signālu, un jūs varat nosūtīt SIGTERM, izmantojot komandu “kill”. Varat izmantot Bash komandu “slazds” un tastatūras taustiņus, lai uztvertu un nosūtītu SIGTERM signālu. Šajā rakstā tika sniegti dažādi piemēri, kā to detalizēti sasniegt.