Pkill ve killall arasındaki fark nedir?


49

Bunun pkilldaha çok filtreleme kuralı olduğunu biliyorum killall. Benim sorum şu, arasındaki fark nedir:

pkill [signal] name

ve

killall [signal] name

Bunun killalldaha etkili olduğunu okudum ve nameprogramla eşleşen tüm süreçleri ve alt işlemleri (ve tekrarlı olarak) öldürdüm . pkillbunu da yapmıyor mu?


Yanıtlar:


46

pgrepVe pkillkamu hizmetleri gibi Sun'ın Solaris 7 yılında piyasaya sürülen ve g33klord kaydetti , bunların yayınlanmaya süreçlerin isim karşılaştırıldıkça argüman olarak bir desen alır. İken pgrepsadece eşleşen işlemlerin bir listesini yazdırır, pkillbelirtilen sinyali (ya gönderir SIGTERMsüreçlere varsayılan). Dikkatli olmak ve ilk önce eşleme işlemlerini gözden geçirmek ve ardından onları öldürmek için devam etmek istediğinizde pgrepve arasındaki ortak seçenekler ve anlamlar pkillkullanışlı olur . ve tarafından sağlanan PROCPS diğer içerir paketi, örneğin, bir dosya sistemi programları, , , , ve diğerleri.pgreppkillpgreppkill/procpstopfreeuptime

killallKomut tarafından sağlanan psmisc paketi ve farklıdır pkillsinyaller gönderilir süreçlerini belirlerken ki, varsayılan olarak, bu (ilk 15 karakter) tam bağımsız değişken adı ile eşleşir. -e, --exactSeçenek ayrıca 15 karakterden daha uzun adlar için kesin sonuç gerektirecek şekilde belirtilebilir. Bu, killallkullanımı ile karşılaştırıldığında biraz daha güvenli hale getirir pkill. Belirtilen bağımsız değişken, slash ( /) karakterleri içeriyorsa , bağımsız değişken bir dosya adı olarak yorumlanır ve bu dosyayı çalıştıran işlemler sinyal alıcıları olarak seçilir. killallayrıca, işlem seçeneklerinin düzenli ifadeyle eşleşmesini de -r, --regexpseçenek aracılığıyla destekler .

Başka farklılıklar da var. killallÖrneğin komut (yaşa göre süreçlerini eşleşen seçenekler vardır -o, --older-thanve -y, --younger-thanise) pkillsadece (aracılığıyla belirli terminalde işlemleri öldürmek için söylenebilecek -tseçeneği). Açıkçası o zaman, iki komut belirli nişlere sahiptir.

Not killallsistemlerde komut gelen soyundan Unix Sistem V (özellikle Sun'ın Solaris , IBM'in AIX ve HP'nin HP-UX ) öldüren bütün root tarafından çalıştırırsanız etkili bir sistem kapatılıyor, belirli bir kullanıcı tarafından killable süreçleri.

Linux psmisc programları için de geliştirilmektedir BSD (ve uzantısı Mac OS X ), dolayısıyla killallsemantik "adı ile öldürmek süreçleri" Orada izler.


Ben karşılaştığınız temel fark, bir kullanıcı tarafından bir desen komutları durdurma olduğu killall -u <username> -r <process>veya pkill <process> -U <uid>hangi yapar killallkullanmak benim için çok daha kolay.
jeremysprofile

13

pkillBahsettiğiniz filtreler ve yüksek oranda yeniden kullanılabilirlikle eşleştirildiğinden, gelecek nesillere öğretmeye değer olanı pgrep. Süreçleri aynı şekilde öldürürler ve yinelemeli olarak öldürmezler - buna rağmen pgrep, oturuma göre (kişi başına, düşünce grubu) veya işlem grubunu (iş kontrolünü düşün) seçebilirsiniz.


8

Bir fark kısmi veya tam isim alabilirken killallargüman olarak işlemin pkilltam adını alır.

Sen başvurabilir Bu soruyu pkill hakkında derinlemesine bilmek


1

killall- İşlemleri ada göre öldür. killallKomut adı, belirli bir kullanıcının sahip olduğu işlemler veya tüm sistem genelinde işlemler gibi seçim ölçütleriyle eşleşen bir veya daha fazla işleme sinyal göndermek için komutu kullanın .

pkill- Belirtilen sinyali (varsayılan olarak SIGTERM) stdout'ta listelemek yerine her işleme gönderir. pkillgibi birden fazla işlemi işaret edebilir killall, ancak aşağıdakilerin herhangi bir birleşimini içerebilen gelişmiş seçim ölçütlerini kullanabilir:

Komut UID Ana Terminali

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.