İçinde bashşunları yapabilmelisiniz:
kill $(ps aux | grep '[p]ython csp_build.py' | awk '{print $2}')
Çalışmaları ile ilgili detaylar aşağıdaki gibidir:
psSize tüm işlemlerin listesini verir.
grepArama dizisi dayalı, filtreler [p]bir hile olmadığı ve gerçek toplayıp durdurmak için grepsürecin kendisini.
awkSadece sana PID olan her satırın, ikinci alanını verir.
$(x)Yapı araçları çalıştırmak için xdaha sonra çıkışını alıp komut satırında koydu. psYukarıdaki yapı içindeki bu boru hattının çıktısı, işlem kimlikleri listesidir, böylece bir komutla sonuçlanırsınız kill 1234 1122 7654.
İşte bunu gösteren bir konuşma metni:
pax> sleep 3600 &
[1] 2225
pax> sleep 3600 &
[2] 2226
pax> sleep 3600 &
[3] 2227
pax> sleep 3600 &
[4] 2228
pax> sleep 3600 &
[5] 2229
pax> kill $(ps aux | grep '[s]leep' | awk '{print $2}')
[5]+ Terminated sleep 3600
[1] Terminated sleep 3600
[2] Terminated sleep 3600
[3]- Terminated sleep 3600
[4]+ Terminated sleep 3600
ve tüm uyuyanları sonlandırdığını görebilirsiniz.
Açıklanması grep '[p]ython csp_build.py'biraz daha ayrıntılı olarak biraz:
Bunu sleep 3600 &takip ps -ef | grep sleepettiğinizde , içinde iki işlem yapma eğilimindesiniz ve ve (çünkü her ikisinde de var , bu roket bilimi değil).sleepsleep 3600grep sleepsleep
Bununla birlikte, ps -ef | grep '[s]leep'içinde bir işlem oluşturmaz sleep, bunun yerine yaratır grep '[s]leep've işte zor bit: grepbulamaz, çünkü karakter sınıfından herhangi bir karakter [s]( sardından) normal ifadeyi arar leep.
Başka bir deyişle, aradığı sleepancak grep süreçtir grep '[s]leep'sahip olmadığı sleepo.
Bunu gösterdiğimde (burada SO'daki biri tarafından), hemen kullanmaya başladım çünkü
- eklemekten daha az bir süreç
| grep -v grep; ve
- zarif ve sinsi, nadir bir kombinasyon :-)