Örneklerle Linux’ta Kill Komutu Nasıl Kullanılır
Merhabalar,
Kill, Linux’ta işlemi manuel olarak sonlandırmak için kullanılan çok kullanışlı bir komuttur. Belirli bir süreci veya süreç grubunu nihai olarak sonlandıran veya öldüren bir sinyal gönderir. Kullanıcı kill komutuyla gönderilecek bir sinyal belirtmezse, işlem varsayılan TERM sinyali kullanılarak sonlandırılır.
Süreç bilgilerinin alınması:
ilk önce tepki vermeyen süreci bilgisini öğreneceğiz ve sonrasında sonladırma işlemi yapacağız. İşlem bilgisini top ve ps olmak üzere iki komut kullanarak alabiliriz. Çalışan işlemlerin bir listesini görmek için komut satırından top yazalım.
top
İlgili bazı detayları terminalde bulacaksınız. Örneğin, “Uygulama” ile ilgili sürecin yanıt vermediği bir durumu hayal edin. Bizim durumumuzda, üst komut ekranımıza göre, İşlem Kimlikleri (PID) 4077, 3943, 1774, 1608, 18657 ve 4636 ile çalışan altı adet Uygulama örneği vardır.
Üst kısım son derece kullanışlı olmasına rağmen, bilgi edinmenin her zaman en verimli yolu değildir. Şimdi diyelim ki uygulama işlemlerini öldürmeniz gerekiyor ama top komutundan gerçek zamanlı bilgi almak istemiyorsunuz. bu senaryoda ps komutunu kullanabilirsiniz. Ayrıca, grep komutunu kullanarak çıktıyı filtreleyebiliriz. Yalnızca Uygulama ile ilgili süreçleri listelemekle ilgileniyoruz. Uygulama ile ilgili işlemleri görmek için aşağıdaki komutu kullanın:
ps aux
Buna karşılık,
a = Kullanıcıyla ilgili tüm süreçleri göster
u = Sürecin sahibini/kullanıcısını göster.
x = Terminal ile ilgili olmayan tüm işlemleri göster
grep, bir desenle eşleşen satırları yazdırırken, ps geçerli bir işlemin anlık görüntüsünü döndürür. ps’yi filtrelemek için grep kullanmanın nedeni basittir: ps’yi tek başına çalıştırırsanız, çalışan tüm işlemlerin anlık görüntüsünü alırsınız.
yada belirli bir uygulama için işlemleri görüntüleyelim.
ps aux | grep firefox
Sinyallerin listesini görüntüleyin:
Tüm sinyallerin listesini görüntülemek için kill -l yazın. Kill komutu ile çeşitli sinyaller gönderebiliriz.
Verilen sinyaller listesinden herhangi bir sinyali seçebiliriz.
kill -l
Bazı yaygın sonlandırma sinyalleri vardır:
Sinyal adı Sinyal değeri Etkisi:
SIGHUP 1 Kapat
SIGINT 2 Klavyeden kesinti
SIGKILL 9 Öldürme Sinyali
SIGTERM 15 Sonlandırma sinyali
SIGSTOP 17, 19, 23 İşlemi durdur
Sinyal belirtilmediğinde, varsayılan olarak -15 (-TERM) kullanılır.
Kimliğe göre işlemleri sonlandır:
Sonlandırma ile ilgili bazı öneml bilgiler verelim.
PID değeri sıfırdan büyükse, sinyal PID’ye eşit ID ile işleme gönderilir.
PID sıfıra eşitse, sinyal mevcut süreç grubundaki tüm süreçlere gönderilir. Başka bir deyişle, sinyal, kill komutunu çalıştıran kabuğun GID’sine ait tüm işlemlere gönderilir. İşlem grubu kimliklerini (GID’ler) görüntülemek için ps -efj komutunu kullanın.
PID -1’e eşitse sinyal, komutu çağıran kullanıcı ile aynı UID’ye sahip tüm işlemlere gönderilir. Çağıran kullanıcı root ise, sinyal init ve kill işleminin kendisi dışındaki tüm işlemlere gönderilir.
PID -1’den küçükse, sinyal, PID’nin mutlak değerine eşit GID eşit işlem grubundaki tüm işlemlerine gönderilir.
Normal kullanıcılar kendi süreçlerine sinyal gönderebilir, ancak diğer kullanıcılara ait olanlara değil, root ise diğer kullanıcıların süreçlerine sinyal gönderebilir.
Bu açıklamalardan sonra örneklerle işlemlere başlayalım.
Uygulamamızı sonlandırmak için kill komutunu kullanalım.
Söz dizimi şöyle olacak.
Kill signal PID
18657 işlemi sonlandırmak için kill sinyalini gönderin:
sudo kill -9 18657
16297 işlemlerini kapatmak için sinyali gönderelim
kill -1 16297
Bir uygulalamaya ait olan tüm PID leri öğrenmek için pidof kullanabiliriz.Ben işlemi firefox için yapıyor.
pidof firefox
Görüldüğü gibi hepsinin bilgisini aldım.Şimdi bir komutla hepsini sonladırabilirim.
pid -9 5222 4905 4280 4155 4101 3879 3828 3751 3740 3729 3458 3373
Örneklerle eğitime devam edelim.
34185 işlemini kesmek için klavyeden sinyali gönderelim
kill -2 34185
İşlem adını kullanarak işlemi sonlandırma:
Uygulama altında çalışan tüm işlemleri öldürmek istiyorsanız. killall komutunu kullanalım.
killall -9 uygulama adı
Bu eğitim yazısının sonuna geldik.Umarım bu yazı sizler için faydalı olur.