Linux İşletim Sistemi bir işlemi sonlandırmak için kill komutuyla birlikte gelir. Komut, büyük bir değişiklik / güncelleme işleminden sonra yeniden başlatmaya gerek kalmadan sunucuyu/lokal pc'yi yada arkaplan işlemini/programını çalıştırmaya devam etmeyi mümkün kılar. İşte Linux’un büyük gücü buradan gelmektedir ve bu nedenle Linux sunucuların % 90’ında kullanılmaktadır.
Kill komutu, bir işlem için özel olarak belirtilen bir sinyal gönderir. Kill komutu, doğrudan veya bir kabuk komut dosyasından birkaç farklı şekilde çalıştırılabilir.
Kill komutunun ortak sözdizimi:
Kod: Tümünü seç
# kill [sinyal veya seçenek] PID (ler)
Kod: Tümünü seç
**********************************************
|---------------------------------------------|
|[SİNYAL_ADI] [DEĞERİ] [NE İFADE ETTİĞİ] |
|-------------------------------------------- |
|SIGHUP 1 Hangup |
|SIGKILL 9 Sinyali Öldür |
|SIGTERM 15 Sonlandır |
*********************************************
Bir süreci öldürmek için, işlem kimliğini(PID) bilmemiz gerekir. Bir program başlatıldığında, otomatik olarak bu süreç için benzersiz bir işlem kimliği (PID) oluşturulur.
Linux’taki her sürecin bir işlem kimliği(PID) bulunur . Linux Sistemi önyüklendiğinde başlayan ilk süreç – init sürecidir , bu nedenle çoğu durumda ‘ 1 ‘ değerine atanır.
Init , ana süreci oluşturduğu için bu komutla sonlandırılamaz, dolayısı ile ana sürecin yanlışıkla sonlandırılması önlenmiş olmaktadır. Init kendisini ancak bilgisayarın kapatılması durumunda sonlandırmaya izin verecek şekilde tasarlanmıştır.
Bilgisayarınızdaki tüm süreçleri ve onlara bağlı işlem kimliklerini öğrenmek için PS komutunu kullanabilirsiniz.
Kod: Tümünü seç
# ps -A
Kod: Tümünü seç
Örnek çıktı:
Kod: Tümünü seç
PID TTY TIME CMD
1 ? 00:00:01 init
2 ? 00:00:00 kthreadd
3 ? 00:00:00 migration/0
4 ? 00:00:00 ksoftirqd/0
5 ? 00:00:00 migration/0
6 ? 00:00:00 watchdog/0
7 ? 00:00:01 events/0
8 ? 00:00:00 cgroup
9 ? 00:00:00 khelper
10 ? 00:00:00 netns
11 ? 00:00:00 async/mgr
12 ? 00:00:00 pm
13 ? 00:00:00 sync_supers
14 ? 00:00:00 bdi-default
15 ? 00:00:00 kintegrityd/0
16 ? 00:00:00 kblockd/0
17 ? 00:00:00 kacpid
18 ? 00:00:00 kacpi_notify
19 ? 00:00:00 kacpi_hotplug
20 ? 00:00:00 ata/0
21 ? 00:00:00 ata_aux
22 ? 00:00:00 ksuspend_usbd
Kod: Tümünü seç
# pidof komut_adı
Kod: Tümünü seç
# ps aux |grep komut_adı
Kod: Tümünü seç
# ps aux |grep komutun_PID_No'su
1.Bir kullanıcı tüm süreçlerini öldürebilir.
2.Bir kullanıcı başka bir kullanıcının sürecini öldüremez.
3.Kullanıcı sisteme ait bir süreci sonlandıramaz.
4.Kök kullanıcı(root) Sistem düzeyinde işlemi ve herhangi bir kullanıcının işlemini öldürebilir.
Aynı işlevi gerçekleştirmenin başka bir yolu ‘ pgrep ‘ komutunu çalıştırmaktır.
Örnek çıktı:
Kod: Tümünü seç
# pgrep komut_adı
PID Numarası [bulundu]
Kod: Tümünü seç
#-9 PID Numarası
kill - SIGTERM PID Numarası
Peki sürecin adını kullanarak, süreci sonlandırmaya ne dersiniz?Burada dikkat edilmesi gereken nokta doğru işlem adını yazmanız gerektiğidir, aksi takdirde yanlış bir süreci sonlandırıp işleri karmaşık bir hale getirebilirsiniz.
Kod: Tümünü seç
pkill komutun adı
Kod: Tümünü seç
# kill PID1 PID2 PID3
Kod: Tümünü seç
# kill -9 PID1 PID2 PID3
Kod: Tümünü seç
# kill-SIGKILL PID1 PID2 PID3
Kullanım Şekli:
Kod: Tümünü seç
# killall [sinyal veya seçenek] Süreç Adı
Kod: Tümünü seç
# killall komut_adı
Kod: Tümünü seç
# service komut_adı status
Kod: Tümünü seç
# pgrep komut_adı
Kod: Tümünü seç
# ps -aux | grep komut_adı
Çeviren/Tercüme Eden/Sadeleştiren : TRWE_2012 (https://forum.sordum.net)