Bash ve Python'da SIGTERM Nasıl Gönderilir ve Yakalanır

Bash Ve Python Da Sigterm Nasil Gonderilir Ve Yakalanir



Linux'ta süreçler birbirleriyle sinyaller kullanarak iletişim kurar. Sinyaller, programlara çeşitli olaylar veya talepler hakkında bilgi veren yazılım kesintileri olarak işlev görür. Örneğin, bir program çalışırken, programdan çıkmak için bir öldürme sinyali gönderebilirsiniz. Gönderilen sinyal, yürütmeyi durdurma, programı sonlandırma, yürütmeye devam etme gibi farklı eylemleri tetikleyebilir.

Bash ve Python ile çalışırken, çalışan işlemi yumuşak bir şekilde sonlandırmak için SIGTERM sinyalini gönderebilirsiniz. Bu gönderi, Bash ve Python'da SIGTERM gönderme ve yakalama hakkındadır.

İŞARET SÜRESİ NEDİR

Unix sistemlerinin üç sinyal kategorisi vardır: sistem, cihaz ve kullanıcı tanımlı sinyaller. Her sinyalin bir tamsayı değeri vardır. Adını veya tamsayı değerini belirterek sinyali çalıştırabilirsiniz.







SIGTERM, 15 tamsayı değerine sahip bir sinyaldir. Çalışan bir işlemi soft olarak sonlandırmak istediğinizde çalıştırılır. Bash'te SIGTERM kullanmak için sözdizimi aşağıdadır:



HEDEF TERM'i öldür < PID >

veya

öldürmek - on beş < PID >

Aşağıdaki komutu kullanarak mevcut tüm sinyalleri kontrol edebilirsiniz:



öldür -l





Bash ve Python'da SIGTERM Nasıl Gönderilir ve Yakalanır

SIGTERM'i Bash ve Python'da farklı örneklerde göndermek ve yakalamak isteyebilirsiniz. Bash veya Python programınızı yürüttüğünüzde, programı sonlandırmak için SIGTERM sinyalini çalıştırabilirsiniz. Bash ve Python'da SIGTERM'i nasıl gönderip yakaladığınızı anlamak için farklı örneklerimiz var.

1. Bir Python Komut Dosyası Kullanma

Python 1.4 ve en son sürümleri kullanırken, SIGTERM göndermek ve yakalamak için sinyal kitaplığından yararlanabilirsiniz. Programınızın farklı sinyalleri nasıl yakalaması ve bunlara nasıl tepki vermesi gerektiğini tanımlamak için programınıza kitaplığı aktarın. Sinyal kitaplığı, alınan sinyalin tamsayısını bildirmek için bir sinyal işleyici oluşturmanıza olanak tanır. Daha sonra yakalanan sinyali kaydedebilir ve PID gibi mevcut süreç hakkında bilgi alabilirsiniz. Bir örnek verelim.



Gönderilen sinyalin tamsayısını yakalayan bir Python betiğimiz var. Ayrıca mevcut sürecin PID'sini yakalar.

Aşağıdaki görselde, Python betiğini çalıştırıyoruz ve birkaç saniyede bir çalışan bir while döngüsüne sahibiz. Başka bir terminalde, Python betiğini çalıştırarak elde ettiğimiz PID'yi belirterek süreci sonlandırmak için SIGTERM sinyalini gönderebiliriz:

SIGTERM sinyalini gönderdikten sonra betiğin çalışmayı durdurduğunu fark ederiz. Bunun nedeni, sinyal tamsayısını yakalamasıdır. Bu durumda SIGTERM sinyali için kill -15 komutunu uyguluyoruz. SIGTERM kill sinyalini, tamsayı değeri yerine SIGTERM anahtar sözcüğünü kullanarak da gönderebilirsiniz. Yine aynı sonucu alıyoruz.

Python işinizi aşağıdaki sözdizimini kullanarak da yürütebilirsiniz:

piton3 < senaryo/iş > &

İlk yöntemden farklı olarak bu seçeneği kullanarak SIGTERM'i gönderdiğimizde, iş yürütülmeye başladığında iş kimliğinin yazdırıldığını görebiliriz. Öldürdükten sonra “bitti” durumunu alıyoruz. SIGTERM, adı veya tamsayı belirtilerek gönderilebilir.

2. Bir Bash Komut Dosyası Kullanmak

Bir Bash betiğini yürütürken bir sinyali yakalamak için “trap” komutunu kullanabilirsiniz. Bu örnekte SIGTERM sinyalini yakalamak için “trap” komutunu ekledik. Komut dosyası, SIGTERM sinyali gönderilmezse 'date' komutunu bin kez yürütmek için bir 'for' döngüsüdür.

Bash betiğini yürütürken, SIGTERM sinyalini Ctrl + Z klavye tuşları. 'tuzak' komutu iletilen sinyali yakalar ve 'for' döngüsü çalışmayı durdurur. Çalışan işin bir SIGTERM sinyali aldığını ve durduğunu onaylayan bir çıktı alacaksınız.

Bash'te SIGTERM'i bu şekilde gönderir ve yakalarsınız.

Çözüm

Bir işi veya programı yürütürken farklı hedeflere ulaşmak için farklı sinyaller gönderebilirsiniz. SIGTERM, bir programı yumuşak bir şekilde durdurmak için gönderilir. Python için, bir sinyali yakalamak için bir sinyal işleyiciye ihtiyacınız vardır ve “kill” komutunu kullanarak SIGTERM'i gönderebilirsiniz. SIGTERM sinyalini yakalamak ve göndermek için Bash üzerindeki “trap” komutunu ve klavye tuşlarını kullanabilirsiniz. Bu gönderi, bunun nasıl ayrıntılı olarak başarılacağına dair farklı örnekler sundu.