killall komutu: süreçleri adıyla sonlandırma, -9 sinyali ve psmisc kurulumu

Test ortamıRHEL ailesiAlmaLinux 9.8psmisc 23.4root hesabıDebian 12 · psmisc 23.6 Normal hesap (killall çalıştırır)
Süreç · görev zamanlama komutlarıkillallKonum/usr/bin/killall2026-11-03 tarihinde kontrol edildi

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

  • ↪️ psmisc paketi ve sürümü kontrol etme

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/killall
psmisc 23.4

Aynı 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ı

  • ↪️ Hedefleri süreç adıyla kontrol etme

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 xxsleep
2141 xxsleep-a1
2142 xxsleep-a1
2150 xxsleep-a2
2155 xxsleep-longnam

Dö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 xxsleep
2141 /root/work/xxsleep-a1 300
2142 /root/work/xxsleep-a1 310
2150 /root/work/xxsleep-a2 320
2155 /root/work/xxsleep-longname-x1 330

Yalnı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-a1
2141
2142

Bir 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-a1
2142 2141

ps, -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-a2

Debian 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-zz
xxsleep-zz: no process found

Numarası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

  • ↪️ -e ve 15 karakterlik adlar, -i, -v, -u, -r

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/comm
xxsleep-longnam

pgrep'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-longnam
2155 xxsleep-longnam

killall, 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-longnam
killall: 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 found

Tam 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-x1
killall: 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-a2
Killed 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-a1
Kill 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-a1
Killed 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

KomutGörevBu yazıdaki sonuç
pgrep -l adAdı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 adNumara ve komut satırının tamamıAynı adlı iki xxsleep-a1 sondaki 300 ve 310 argümanlarıyla ayırt edildi
pgrep -x adYalnızca adı tam olarak eşleşen süreçlerin numaralarıxxsleep-a1 için iki satır: 2141 ve 2142
pidof adO adla çalışan numaralar, tek satırdaxxsleep-a1 için 2142 2141
ps -o pid,comm -C adAdı 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/commSüreç adı (ilk 15 karaktere kadar)2155, xxsleep-longnam
killall adO 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 ad15 karakterden uzun adlar yalnızca tam ad eşleşirsexxsleep-longnam no process found verdi, xxsleep-longname-x1 sonlandı
killall -v adSinyal gönderilen her süreç için sonucu yazdırırKilled xxsleep-a2(2150) with signal 15
killall -i adSonlandırmadan önce her süreç için onay istery ve n girilince yalnızca ilk xxsleep-a1 sonlandı
killall -u hesap adıYalnızca o hesabın sahip olduğu süreçlerBir adla birlikte yazıldığında yalnızca o hesabın xxsleep-a1'i sonlandı
killall -9 adSIGTERM yerine SIGKILLKilled xxsleep-a2(2173) with signal 9

📎 Diğer seçenekler: resmî kılavuza göre

SeçenekGörev
-I, --ignore-caseAdları büyük/küçük harf ayırt etmeden karşılaştırır
-g, --process-groupSüreç yerine o sürecin grubuna sinyal (grup başına bir kez)
-l, --listBilinen sinyal adlarının listesi
-n, --ns PIDYalnızca o PID ile aynı PID ad alanındaki süreçler; varsayılan olarak tüm ad alanları
-o, --older-than süreYalnızca o süreden daha eski süreçler (birimler s, m, h, d, w, M, y)
-q, --quietHiçbir süreç sonlandırılmasa da bildirmez
-r, --regexpAdları genişletilmiş düzenli ifade olarak okur
-s, --signal sinyalSIGTERM yerine gönderilecek sinyal
-V, --versionSürüm bilgisini yazdırır
-w, --waitSinyal gönderilen süreçlerin hepsi kaybolana kadar bekler
-y, --younger-than süreYalnızca o süreden daha yeni süreçler
-Z, --context kalıpYalnı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.

killall komutu simülatörüpsmisc 23.4
[root@server work]#
Yalnızca tarayıcınızda çalışır. Soldaki liste örnek değerlerdir; killall, Debian 12 sunucusunda alınan çıktı metinlerini izleyen bir taklittir ve satırları yalnızca listeden siler.

4️⃣ killall sinyalleri

  • ↪️ -s seçeneği, killall -9 ve sinyal numaraları

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-a2
Killed xxsleep-a2(2173) with signal 9

Sinyal 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) SIGRTMAX

Tek 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 15
TERM
kill -l 9
KILL

Listede 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

killall psmisc paketinin, pkill ise pgrep ile aynı procps-ng paketinin komutudur. pkill, pgrep gibi adın bir kısmını genişletilmiş düzenli ifadeyle arar; killall ise adları yalnızca -r eklendiğinde düzenli ifade olarak okur (resmî kılavuza göre).

psmisc resmî kılavuzu, Linux dışındaki sistemlerde [killall ad] komutunun beklenenden farklı davranabileceğini ve yönetici hesabıyla çalıştırırken özellikle dikkatli olunması gerektiğini yazar. Diğer sistemlerde önce o sistemin kılavuzunu kontrol edin.

Bir kerede yazabileceğiniz ad sayısının bir sınırı vardır: unsigned long tamsayısının boyutunun 8 ile çarpımı. Bu, 64 bit sistemlerde genellikle 64, 32 bit sistemlerde 32'dir (resmî kılavuza göre).

ℹ️ 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.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

İnsan olduğunuzu kanıtlayın: 4   +   7   =