killall komutu: süreçleri adıyla sonlandırma, -9 sinyali ve psmisc kurulumu
killall komutu, çalışan süreçleri süreç numarası (PID) yerine program adıyla seçip onlara sinyal gönderen bir Linux komutudur; sinyal belirtmezseniz SIGTERM gönderir (resmî kılavuza göre). Aynı adlı süreçlerin hepsini bir kerede sonlandırdığı için, bir AlmaLinux 9 sunucusunda sleep'i farklı adlarla kopyalayıp başlattığımız dört süreci önce pgrep ve ps ile kontrol ettik; adı 15 karakterden uzun olan çalıştırılabilir dosyada süreç adında yalnızca ilk 15 karakter kalmıştı.
killall'ı yalnızca bir Debian 12 sunucusunda normal hesapla test için başlattığımız xxsleep süreçlerinde çalıştırdık. Sonuç kutuları, bir AlmaLinux 9.8 sunucusunda root hesabıyla çalıştırılan rpm, pgrep, ps, pidof, cat ve kill çıktısını ve Debian 12 sunucusunda çalıştırılan killall çıktısını gösterir. Süreç numaraları (PID), süreç adları, çalıştırılabilir dosya yolları ve hesap adları örnek değerlerle değiştirildi.
1️⃣ killall komutunu kurma
killall, psmisc paketinde bulunur. Bir AlmaLinux 9.8 sunucusunda /usr/bin/killall dosyasının hangi pakete ait olduğunu rpm ile kontrol ettiğimizde psmisc 23.4 sürümü göründü.
rpm -qf --qf '%{NAME} %{VERSION}\n' /usr/bin/killallpsmisc 23.4Aynı paketin rpm -ql ile görüntülenen dosya listesinde pstree ve fuser de vardı.
Komutun bulunamadığını belirten [command not found] çıkarsa psmisc paketini kurun. RHEL ailesinde [dnf install psmisc], Debian ailesinde [apt install psmisc] biçimindedir. Debian 12 sunucusunda psmisc 23.6 zaten kuruluydu ve killall /usr/bin/killall konumundaydı.
AlmaLinux 9.8 sunucusunda kontrol ettiğimizde, adı benzeyen pkill procps-ng paketindeydi ve kill bir kabuk yerleşik komutuydu.
2️⃣ killall komutunun kullanımı
Temel biçim [killall süreç adı] şeklindedir. Verilen adla çalışan tüm süreçleri bulup onlara sinyal gönderir; birden fazla ad yazarsanız her ad için aynısını yapar (resmî kılavuza göre).
Aynı adlı süreçlerin hepsi bir kerede sonlandığı için, o adla neyin çalıştığını önce pgrep ile kontrol edin. sleep'i bir çalışma klasörüne xxsleep-a1, xxsleep-a2 ve xxsleep-longname-x1 adlarıyla kopyaladık, xxsleep-a1'i iki kez başlatarak toplam dört süreç çalıştırdık ve ardından -l ile numaraları ve adları yazdırdık.
pgrep -l xxsleep2141 xxsleep-a1
2142 xxsleep-a1
2150 xxsleep-a2
2155 xxsleep-longnamDördüncü satırda çalıştırılabilir dosyanın adı xxsleep-longname-x1, ancak süreç adı xxsleep-longnam noktasında kesilmişti.
-a eklenince çalıştırılan komut satırının tamamı görünür. Aynı adlı iki xxsleep-a1'i sondaki saniye cinsinden argümanla, 300 ve 310 ile ayırt ettik.
pgrep -a xxsleep2141 /root/work/xxsleep-a1 300
2142 /root/work/xxsleep-a1 310
2150 /root/work/xxsleep-a2 320
2155 /root/work/xxsleep-longname-x1 330Yalnızca adı tam olarak eşleşen süreçleri bulmak için -x ekleyin. xxsleep-a1 için sonuç iki numaraydı.
pgrep -x xxsleep-a12141
2142Bir adı olduğu gibi girip yalnızca numaraları kontrol etmek için pidof kullanın. xxsleep-a1 arandığında iki numara tek satırda göründü.
pidof xxsleep-a12142 2141ps, -C'nin ardından virgülle ayrılmış birden fazla ad yazdığınızda yalnızca adı tam olarak eşleşen süreçleri yazdırır.
ps -o pid,comm -C xxsleep-a1,xxsleep-a2 PID COMMAND
2141 xxsleep-a1
2142 xxsleep-a1
2150 xxsleep-a2Debian 12 sunucusunda aynı adlarla dört süreç başlatıp [killall xxsleep-a1] çalıştırdığımızda hiçbir şey yazdırmadan 0 çıkış koduyla bitti. pgrep ile yeniden aradığımızda iki xxsleep-a1 kaybolmuştu ve yalnızca xxsleep-a2 ile xxsleep-longname-x1 kalmıştı. Ad yerine eğik çizgi (/) içeren bir yol yazarsanız, adından bağımsız olarak o dosyayı çalıştıran süreçleri seçer (resmî kılavuza göre).
Var olmayan xxsleep-zz adını yazdığımızda adın arkasına [no process found] eklenmiş bir satır çıktı ve 1 çıkış koduyla bitti. Çıkış kodu yalnızca yazılan her ad için en az bir süreç sonlandırıldığında 0 olur (resmî kılavuza göre).
killall xxsleep-zzxxsleep-zz: no process foundNumarasını bildiğiniz tek bir süreci sonlandırmak istediğinizde Linux kill komutu ile yalnızca o numaraya sinyal gönderin.
3️⃣ killall komutu seçenekleri
xxsleep-longname-x1 olarak başlatılan sürecin adını /proc/PID/comm dosyasından okuduğumuzda yalnızca ilk 15 karakter olan xxsleep-longnam kalmıştı.
cat /proc/2155/commxxsleep-longnampgrep'i 16 karakterlik xxsleep-longname ile çalıştırdık.
pgrep -a xxsleep-longnameÇıktı olmadan 1 çıkış koduyla bitti; 15 karakterlik xxsleep-longnam ile yeniden aradığımızda o süreç göründü.
pgrep -l xxsleep-longnam2155 xxsleep-longnamkillall, 15 karakterden uzun bir ad aldığında tam adını okuyamadığı süreçler varsa ilk 15 karakteri eşleşenlerin hepsini hedef alır; -e eklenirse bu tür girdileri atlar (resmî kılavuza göre). Debian 12 sunucusunda -e ve -v ile ilk 15 karakter olan xxsleep-longnam yazıldığında, adı 15 karakterde kesilmiş diğer üç sürecin atlandığını belirten satırlar çıktı ve [no process found] ile bitti.
killall -e -v xxsleep-longnamkillall: skipping partial match quota_events_un(37)
killall: skipping partial match acpi_thermal_pm(112)
killall: skipping partial match ext4-rsv-conver(246)
xxsleep-longnam: no process foundTam ad olan xxsleep-longname-x1 yazıldığında aynı atlama satırlarının ardından o sürece sinyal gönderildiğini gösteren bir satır çıktı.
killall -e -v xxsleep-longname-x1killall: skipping partial match quota_events_un(37)
killall: skipping partial match acpi_thermal_pm(112)
killall: skipping partial match ext4-rsv-conver(246)
Killed xxsleep-longname-x1(2155) with signal 15-v eklenince sinyal gönderilen her süreç için ad, numara ve sinyal numarası içeren bir satır göründü.
killall -v xxsleep-a2Killed xxsleep-a2(2150) with signal 15-i her süreç için sonlandırılıp sonlandırılmayacağını sorar. İki xxsleep-a1'i yeniden başlatıp standart girdiden sırayla y ve n verdiğimizde iki soru tek satırda art arda göründü; yalnızca ilk xxsleep-a1 sonlandı, ikincisi kaldı.
printf 'y\nn\n' | killall -i xxsleep-a1Kill xxsleep-a1(2171) ? (y/N) Kill xxsleep-a1(2172) ? (y/N)-u yalnızca o hesabın sahip olduğu süreçleri seçer; adı yazmazsanız o hesabın tüm süreçleri hedef olur. Hesap adının ardından xxsleep-a1 de yazıldığında sinyal yalnızca kalan xxsleep-a1'e gönderildi.
killall -v -u user xxsleep-a1Killed xxsleep-a1(2172) with signal 15-o ve -y başlangıç zamanına göre seçer; süre, [-o 30m] gibi sayının ardına s, m, h, d, w, M veya y birimi eklenerek yazılır.
-r adları genişletilmiş düzenli ifade olarak okur. ^xxsleep-a kalıbı pgrep'e verildiğinde xxsleep-a ile başlayan üç süreç göründü.
pgrep -l '^xxsleep-a'2141 xxsleep-a1
2142 xxsleep-a1
2150 xxsleep-a2-w, sinyal gönderilen süreçlerin hepsi kaybolana kadar her saniye kontrol ederek bekler. Sinyali yok sayan ya da zombi durumunda kalan bir süreç varsa sonsuza dek bekleyebilir.
Aşağıdaki ilk tablo bu yazıda gerçekten çalıştırılan kontrol komutlarını ve killall seçeneklerini içerir; çalıştırılmayan killall seçenekleri resmî kılavuza göre ikinci tabloda toplandı.
📌 Süreçleri kontrol etme ve killall: bu yazıda çalıştırılan sonuçlar
| Komut | Görev | Bu yazıdaki sonuç | |
|---|---|---|---|
| pgrep -l ad | Adında bunu içeren süreçlerin numarası ve adı | xxsleep ile dört satır; uzun ad yalnızca ilk 15 karaktere, xxsleep-longnam'a kadar görünür | |
| pgrep -a ad | Numara ve komut satırının tamamı | Aynı adlı iki xxsleep-a1 sondaki 300 ve 310 argümanlarıyla ayırt edildi | |
| pgrep -x ad | Yalnızca adı tam olarak eşleşen süreçlerin numaraları | xxsleep-a1 için iki satır: 2141 ve 2142 | |
| pidof ad | O adla çalışan numaralar, tek satırda | xxsleep-a1 için 2142 2141 | |
| ps -o pid,comm -C ad | Adı tam olarak eşleşen süreçlerin numarası ve adı; virgülle birden fazla ad | İki xxsleep-a1 satırı ve bir xxsleep-a2 satırı | |
| cat /proc/PID/comm | Süreç adı (ilk 15 karaktere kadar) | 2155, xxsleep-longnam | |
| killall ad | O adlı süreçlere SIGTERM | İki xxsleep-a1 sonlandı, çıkış kodu 0; var olmayan xxsleep-zz adı no process found ve çıkış kodu 1 verdi | |
| killall -e ad | 15 karakterden uzun adlar yalnızca tam ad eşleşirse | xxsleep-longnam no process found verdi, xxsleep-longname-x1 sonlandı | |
| killall -v ad | Sinyal gönderilen her süreç için sonucu yazdırır | Killed xxsleep-a2(2150) with signal 15 | |
| killall -i ad | Sonlandırmadan önce her süreç için onay ister | y ve n girilince yalnızca ilk xxsleep-a1 sonlandı | |
| killall -u hesap adı | Yalnızca o hesabın sahip olduğu süreçler | Bir adla birlikte yazıldığında yalnızca o hesabın xxsleep-a1'i sonlandı | |
| killall -9 ad | SIGTERM yerine SIGKILL | Killed xxsleep-a2(2173) with signal 9 |
📎 Diğer seçenekler: resmî kılavuza göre
| Seçenek | Görev | |
|---|---|---|
| -I, --ignore-case | Adları büyük/küçük harf ayırt etmeden karşılaştırır | |
| -g, --process-group | Süreç yerine o sürecin grubuna sinyal (grup başına bir kez) | |
| -l, --list | Bilinen sinyal adlarının listesi | |
| -n, --ns PID | Yalnızca o PID ile aynı PID ad alanındaki süreçler; varsayılan olarak tüm ad alanları | |
| -o, --older-than süre | Yalnızca o süreden daha eski süreçler (birimler s, m, h, d, w, M, y) | |
| -q, --quiet | Hiçbir süreç sonlandırılmasa da bildirmez | |
| -r, --regexp | Adları genişletilmiş düzenli ifade olarak okur | |
| -s, --signal sinyal | SIGTERM yerine gönderilecek sinyal | |
| -V, --version | Sürüm bilgisini yazdırır | |
| -w, --wait | Sinyal gönderilen süreçlerin hepsi kaybolana kadar bekler | |
| -y, --younger-than süre | Yalnızca o süreden daha yeni süreçler | |
| -Z, --context kalıp | Yalnızca güvenlik bağlamı genişletilmiş düzenli ifade kalıbıyla eşleşen süreçler; diğer argümanlardan önce yazılır; ad yazılmayabilir |
🔲 killall komutu simülatörü
Aşağıdaki simülatör, dört xxsleep sürecine örnek hesap user1'in xxsleep-a2'sinin eklendiği bir listeyle başlar. Çiplere dokunarak [killall -v], [-i] ve [-u] ile listeden hangi satırların kaybolduğunu karşılaştırabilirsiniz; killall çıktı metinleri Debian 12 sunucusunda alınan çıktıya göre yapılmış bir taklittir.
4️⃣ killall sinyalleri
Gönderilecek sinyal [-HUP] ya da [-SIGHUP] gibi adla, [-1] gibi numarayla veya -s seçeneğinin ardından yazılır (resmî kılavuza göre). [killall -9 süreç adı] 9 numaralı sinyal olan SIGKILL'i gönderir. SIGKILL bir sürecin yakalayamadığı ve yok sayamadığı bir sinyal olduğundan (resmî kılavuza göre) süreç temizlik işlerini yapamadan sonlanır. Bu yüzden varsayılan sinyal SIGTERM ile sonlanmadığında gönderilir.
Debian 12 sunucusunda yeniden başlatılan xxsleep-a2'ye -v ile birlikte -9 eklendiğinde sinyal numarası 9 yazan bir satır çıktı.
killall -9 -v xxsleep-a2Killed xxsleep-a2(2173) with signal 9Sinyal adlarını ve numaralarını [kill -l] ile kontrol ettik. killall'ın da bildiği sinyal adlarını yazdıran bir -l seçeneği vardır.
kill -l 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR
31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3
38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7
58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAXTek bir numara girildiğinde yalnızca o sinyalin adı göründü. killall'ın varsayılan olarak gönderdiği 15 TERM, -9 ile gönderilen 9 ise KILL idi.
kill -l 15TERMkill -l 9KILLListede olmayan bir sinyal adı yazarsanız [FOO: unknown signal; killall -l lists signals.] biçiminde bir mesaj çıkar (resmî kılavuza ve program metnine göre).
🔢 SSS & önerilen içerikler
Gerçek zamanlı kontrol
Linux top komutu (CPU ve bellek kullanımını görme)
Her sürecin ne kadar CPU ve bellek kullandığını gerçek zamanlı gösteren komuttur.
İş kontrolü
Linux'ta arka plan (Back Ground) ve ön plan (Fore Ground): süreçleri kontrol etme
Bir komutu arka plana gönderip yeniden ön plana getiren iş kontrolü yöntemidir.
Açık dosyalar
[Linux] lsof komutu: kullanımdaki dosya bilgilerini yazdırma
Bir sürecin açık tuttuğu dosyaları ve soketleri PID ile birlikte gösteren komuttur.
ℹ️ Satış ortaklığı bildirimi
Bu sitenin içeriklerinde satış ortaklığı bağlantıları bulunur. Bir ziyaretçi bu bağlantılar üzerinden ürün veya hizmet satın alırsa bu site satıcıdan komisyon alır. Bu süreçte alıcının ödediği tutar (kampanya indirimlerinde tutar düşer↓) artmaz. Yayımlanan fiyat, indirim ve stok bilgileri yazının yazıldığı zamana aittir ve gerçek durumdan farklı olabilir; bu yüzden satın almadan önce son bilgiyi satıcıdan kontrol etmenizi rica ederiz. Ürünler kendi ölçütlerimize göre seçilir ve değerlendirilir; komisyon alınıp alınmaması tanıtım sırasını veya değerlendirme içeriğini etkilemez.