'Top' ile belirli süreçler nasıl seçilir?


18

Bir programın birden fazla örneği olması durumunda çalıştırma pidof programşunları sağlar:

`1 2 3`

top -pvirgülle ayrılmış argümanlar kabul eder: 1, 2, 3.

Bu top -p `pidof program`işe yaramayacağı anlamına gelir :

    top: unknown argument '1'
usage:  top -hv | -bcisSH -d delay -n iterations [-u user | -U user] -p pid [,pid ...]

Bana bunun nasıl yapılacağını gösterebilir misin? Awk, sed, vb.'ye aşina değilim ...

Yanıtlar:


25

Bunun sedgibi basit şeylere bir alternatif tr:

top -p $(pidof program | tr ' ' ',')

tr ayrıca değişken sayıda alanı kolayca işleyebilir:

tr -s ' ' ','

Ayrıca, kullanılabilir durumdaysa, pgrepburada iyi çalışabilir:

top -p $(pgrep -d , program)

Virgül argüman (ayırıcı) olduğu -dve arasında bir boşluk bıraktığınızdan emin olun ,.

Ayrıca, pgrep'in "program" ın her sonucunu döndüreceğini unutmayın, bu nedenle "program-foo" adında bir işleminiz varsa, bu da döndürülür (dolayısıyla pgrep adı).


Birden fazla program içintop -p $(pgrep -d, "(nginx|mysql)" )
user2037659

6

sedŞu Verilerinizi değiştirir ile ,:

top -p $(pidof program | sed 's/ /, /g')

3

Bu, birden fazla programa göz atmak için iyi çalışır:

top -p `pgrep -d, -f program1`, `pgrep -d, -f program2`

Daha iyi kullanım:top -p $(pgrep -d, "(nginx|mysql)" )
user2037659
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.