Kill, pkill ve killall arasındaki fark nedir


31

killKomuta aşina oldum ve çoğu zaman sadece bir işlemi zorla öldürmek için kill -9 kullandığımız zaman, kullanılabilecek başka birçok sinyal var kill. Ama kullanım davalarının ne olduğunu pkillve killallzaten bir kill emri olup olmadığını merak ediyorum .

Do pkillve killallkullanmak killonların uygulanmasında komutunu? Demek istediğim onlar sadece sarıcılar killya da kendi uygulamaları var?

pgrepKomutun işlem kimliğini işlem adından nasıl aldığını da bilmek istiyorum .

Tüm bu komutlar aynı temel sistem çağrılarını kullanıyor mu? Performans açısından hangisinin daha hızlı olduğu konusunda bir fark var mı?


2
İki şey: Neden kill -9varsayılan olarak kullanıyorsunuz? -15 (lütfen durun) ve -1 (modem kapatıldı, lütfen TEMİZLİKLE kendinizi kapatın) çok daha kibar. İkincisi. Linux olmayan kutularda killall kullanılmasına dikkat edin. Farklı davranabilir. (Örneğin solaris'te hepsini öldürür. İşlem adlarında FİLTRE EDİLMEMEKTEDİR).
Hennes

Yanıtlar:


31

killKomut için çok basit bir sarıcı kill sistem çağrısı , sadece işlem kimliği (PID) bilir. pkillve killallayrıca kill sistem çağrısına (aslında, doğrudan sistem çağrısını çağıran libc kütüphanesine) sarılmışlardır, ancak işlem adı, işlemin sahibi, oturum kimliği vb.

Nasıl pkillve killallişin kullanılmasına görülebilir ltraceveya straceüzerlerinde. Linux'ta, ikisi de /procdosya sistemini okurlar ve bulunan her pid (dizin) için, bir işlemi adı veya diğer özellikleriyle tanımlayacak şekilde geçiş yapar. Bunun nasıl yapıldığı teknik olarak konuşuyor, çekirdek ve sisteme özgü. Genel olarak, /proc/<PID>/statkomut alanını hangi alandan içerdiğini 2. alan olarak okurlar . İçin pkill -fve pgrepincelemek /cmdlineher PID değerlerini proc girişi için giriş.

pkillve sistem çağrısını pgrepkullanın readproc, oysa kullanmaz killall. Performans farkı varsa söyleyemem: bunu kendi başınıza kıyaslamanız gerekecek.


2

öldür ve öldür, bir süreci öldürmenin bir yolunu sağlayan araçlardır. Birincisi PID'sine, ikincisi adına göre. pgrep (list) ve pkill (varsayılan olarak öldür), bir işleme kendi adına veya diğer özniteliklerine göre ileti göndermek için bir yol sağlayan araçlardır: http://linux.die.net/man/1/pkill Hakkında daha fazla bilgi için sinyalleri: http://linux.die.net/man/7/signal


killallBir süreci ismiyle öldürmek için mi kullanılıyor? ve bu amaçla pgrep kullanır? ve killallayrıca tüm çocuk süreçlerini öldürür,? killallvarsayılan olarak hangi sinyal kullanılır?
Ijaz Ahmad Khan

3
... Solaris'te olmadığınız sürece, bu durumda killall, öldürme hakkınız olan tüm işlemleri öldürür, böylece root iseniz, sunucuyu etkin bir şekilde yeniden başlatırsınız.
Jenny D,

1
evet: killall chromiumkrom işlemini öldürür, pgrep chromiumsize PID listesini verir, pkill chromiumkromu öldürür. Killall (pkill gibi) varsayılan SIGTERM sinyali ile gönderecek
dervishe
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.