SORU
18 AĞUSTOS 2010, ÇARŞAMBA


Ve bir süreç içinde bir satır bash kullanarak öldürmek ve düzenli

Ben genellikle programlama sırasında bir süreci öldürmek gerekir.

Şimdi benim gibi

[~]$ ps aux | grep 'python csp_build.py'
user    5124  1.0  0.3 214588 13852 pts/4    Sl   11:19   0:00 python csp_build.py
user    5373  0.0  0.0   8096   960 pts/6    S    11:20   0:00 grep python csp_build.py
[~]$ kill 5124

Nasıl süreç kimliği otomatik olarak ayıklamak ve aynı çizgide onu öldürebilir miyim?

Bu gibi:

[~]$ ps aux | grep 'python csp_build.py' | kill <regex that returns the pid>

CEVAP
18 AĞUSTOS 2010, ÇARŞAMBA


bash, yapmak gerekir:

kill $(ps aux | grep '[p]ython csp_build.py' | awk '{print $2}')

Onun çalışmaları ile ilgili ayrıntılar aşağıdaki gibidir:

  • ps tüm işlemlerin listesini verir.
  • Arama dizesi dayalı grep filtreler [p] grep gerçek süreci kendini toplayıp durdurmak için bir hile.
  • awk sadece PID olan her satır, ikinci alan veriyor.
  • $(x) inşa x sonra çıktısını al yürütmek ve komut satırında koymak demektir. Yukarıda inşa ps boru hattı içinde çıkış kill 1234 1122 7654 gibi bir komut ile sona kadar süreci Kimliklerinin bir listesini.

İşte bir transkript Eylem olarak gösterme:

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
pax> _

ve bütün uyuyanlar bunu sonlandırmak görebilirsiniz.


Biraz daha ayrıntılı grep '[p]ython csp_build.py' bit açıklama:

sleep 3600 & ps -ef | grep sleep, ardından ne zaman almak eğilimindedirikibu sleep, sleep 3600 grep sleep (ikisi de sleep çünkü, bu roket bilimi değil) ile işler.

Ancak, ps -ef | grep '[s]leep' olmaz oluşturma işlemi ile sleep, bunu yerine oluşturur grep '[s]leep' ve işte zor: * * grep değil bulmak çünkü göründüğü için düzenli ifade "herhangi bir karakter karakter sınıfı [s] (s) ve ardından leep.

Diğer bir deyişle, sleep yok sleep ama grep süreci grep '[s]leep' arıyor.

Bu (burada birinin YANİ) gösterildiği zaman, ben hemen, çünkü bunu kullanmaya başladım

  • 35**; ve . ekleme daha az bir süreç
  • zarifvesinsi, nadir bir arada :-)

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • BioHunta

    BioHunta

    28 Mayıs 2006
  • jonathepianist

    jonathepiani

    31 Temmuz 2008
  • Liberator

    Liberator

    14 EYLÜL 2007