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
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şax
sonra çıktısını al yürütmek ve komut satırında koymak demektir. Yukarıda inşaps
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 :-)
Nasıl bir düzenli ifade içinde birden ...
Nasıl komut satırı argüman bash bir ko...
Nasıl çizgi bash kullanarak iki dosyay...
Nasıl bir bash betiği içinde düzenli i...
Satır eşleştirmek için düzenli ifade e...