Pgrep'i öldürmeyle zincirleyebilir miyim?


31

Bunun |, ilk komutun sonuçlarını diğerine göndermek için kullanıldığını fark ettim . Bir isimle eşleşen tüm işlemleri öldürmek istiyorum.
Bu, pgrep'in normalde yaptığı şeydir:

$ pgrep name
5089
5105

Ve birden fazla argüman şununla çalışıyor gibi görünüyor kill:

sudo kill 5089 5105

Ancak bu yanlış:

pgrep name | kill

Peki düzgün yapmak nasıl?


3
pkill. Ve eğer bu olmasaydı kill $(pgrep ...),.
— Mikel

Sadece bu özel komutlar yüzünden değil, aynı zamanda komut zincirini daha iyi anlayabilmem için soruyorum. Ancak soru skorundan da görebildiğim gibi, anlamak istediğim sorular istenmeyen ...
— Tomáš Zato - Monica Hazretleri

Soruyu daha genel hale getirmek ve bunun yinelemeli olmadığından emin olmak istiyorsanız, oy kullanabilirim.
— Mikel

Maalesef önceki yorumumu yanlışlıkla sildim. Bir tablet üzerindeyim ve bu sitede yan yana gerçekten küçük düğmeler var.
— Mikel

Sadece reddettiğimi söyledim çünkü sorunuzun öğrenemediğiniz hiçbir şeyi sormadığı görülüyordu man pgrep. Olumsuz düğme, bir sorunun hiçbir araştırma çabası göstermediğini söyler ve sorunuzda hiçbir şey göremedim. Üzgünüm, sert gözüküyorsa.
— Mikel

Yanıtlar:


42

Bunu dene:

pgrep name | xargs kill

Eğer kullanırsanız pgrep name | kill, bir çıktıya pgrep nameait stdin'i beslenmektedir kill. Çünkü killstdin argümanlarını okumuyor, bu yüzden işe yaramayacak.

Kullanarak xargs, killstdin'den argümanlar oluşturacaktır . Örnek:

$ pgrep bash | xargs echo
5514 22298 23079

5
Newline'a göre boşlukla ilgisi yok. Çünkü öldürmek stdin hakkındaki tartışmaları okumaz.
— Mikel

@Mikel: Benim hatam düzeltildi.
— cuonglm


5

Belirli değil geneline cevap vermek için ...

Borular çıktıyı bir programdan başka bir programa girdi olarak aktarmak içindir.

Bir programın çıktısını , farklı bir programa komut satırı argümanları olarak kullanmaya çalışıyorsunuz gibi görünüyor .

Bunu yapmak için komut değiştirme işlevini kullanın .

Örneğin koşmak istersen

sudo kill 5089 5105

Ve pgrep nameçıktı veren bir emir var.5089 5105

Onları bir araya getirdin

sudo kill $(pgrep name)

Çok teşekkürler. Umarım bu diğer yeni başlayanlara da yardımcı olur.
— Tomáš Zato - Monica
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.