SIGTERM ‘mi SIGKILL ‘mi?

Hem SIGTERM hem de SIGKILL, Linux’ta bir süreci sonlandırmak için kullanılır. Ancak SIGTERM kullanmayı tercih etmelisiniz. İşte nedeni!

Bir süreci sonlandırmak, Linux’ta süreç yönetiminin çok önemli bir parçasıdır.

Süreç yönetimi kendi başına bir konu olduğundan, bu yazıda kullanıcı süreçlerini ve sinyal işlemeyi yönetmenin ayrıntılarına girilmeyecek.

SIGTERM nedir?

UNIX benzeri sistemlerde, SIGTERM sinyali bir programı sonlandırmak için kullanılır. SIGnal ve TERMinate’den oluşan isminden bunu tahmin edebilirsiniz.

SIGTERM, SIGTERM sinyalini alan işlem onu yok saymayı seçebileceğinden, yumuşak öldürme olarak da adlandırılabilir. Başka bir deyişle, bir süreci öldürmenin kibar yoludur.

Linux’ta bir sürece SIGTERM nasıl gönderilir?

Pardus/Linux’taki kill komutu, bu tür tüm sinyalleri işlemlere göndermek için kullanılır.

Varsayılan olarak, kill komutu SIGTERM sinyalini gönderir.

Bu komutu aşağıdaki şekilde kullanmak için işlemin pid’ini bilmeniz gerekir :

kill <process_id>

SIGKILL nedir?

SIGKILL, bir sürecin derhal sonlandırılması için kullanılır. Bu sinyal göz ardı edilemez veya engellenemez. Ana süreç ve alt süreçlerin tümü sonlandırılır.

Bu, bir süreci durdurmanın en kesin yoludur ve yalnızca son çare olarak kullanılmalıdır. Durdurmak istediğiniz fakat yanıt vermeyen bir süreciniz olduğunda SIGKILL sinyali göndermeniz uygun olacaktır.

SIGKILL, Linux’ta bir işleme nasıl gönderilir?

SIGKILL sinyalini kill komutuyla göndermek ve işlemi hemen sonlandırmak için -9 seçeneğini kullanabilirsiniz:

kill -9 <process_id>

Neden SIGTERM’i SIGKILL’e tercih etmelisiniz?

Bu sinyallerin her ikisi de bir işlemi sonlandırmak için kullanılsa da, ikisi arasında bazı farklılıklar vardır:

  • SIGTERM, süreci incelikle sonlandırırken, SIGKILL işlemi anında sonlandırır.
  • SIGTERM sinyali işlenebilir, göz ardı edilebilir ve engellenebilir ancak SIGKILL engellenemez.
  • SIGTERM, alt süreçleri öldürmez. SIGKILL alt süreçlerini de öldürür.

Bazı Linux kullanıcıları ‘kill -9’ kullanmayı alışkanlık haline getirir ve bu, kaçınmanız gereken bir şeydir. Yanıt vermeyen bir işleminiz olmadığı sürece, SIGKILL’i kullanmanıza gerek yoktur.

SIGTERM ile bir süreç, gerekli bilgileri üst ve alt süreçlerine iletmek için yeterli zamana sahip olacaktır.

SIGKILL’in kullanılması, bir zombi sürecinin yaratılmasına yol açabilir çünkü kapatılan süreç, ana sürecine bir kapatma sinyali aldığını söyleme şansı bulamayacaktır.

Yazının orijinalini buradan okuyabilirsiniz.

Hüseyin GÜÇ

Kariyerime 26 yıl önce başladım. Windows ve Linux sistemlerinin kurulumu, yapılandırılması, yönetimi ve bakımı dahil olmak üzere birden fazla sistem üzerinde uzmanlaştım. Açık kaynak dünyasındaki en son gelişmelerden haberdar olmaktan ve Linux hakkındaki en son araçları, özellikleri ve hizmetleri denemekten hoşlanıyorum. Son 6 yıldır  sistem ve ağ yöneticisi olarak görev yapıyorum ayrıca Pardus Dönüşüm Projesini yönetiyorum ve Pardus İşletim Sisteminin yaygınlaşması adına uğraş gösteriyorum. Boş zamanlarımda açık kaynaklı uygulamaların Türkçe çevirisine katılıyorum ve The Document Foundation üyesiyim.