Bagaimana cara memilih proses spesifik dengan 'atas'?


18

Dalam kasus satu program memiliki banyak instance, menjalankan pidof programmemberi:

`1 2 3`

top -pmenerima argumen koma-delimited: 1, 2, 3.

Ini berarti itu top -p `pidof program`tidak akan berfungsi:

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

Dapatkah Anda menunjukkan kepada saya bagaimana melakukan ini. Saya tidak terbiasa dengan awk, sed, dll ...

Jawaban:


25

Alternatif seduntuk hal-hal sederhana seperti ini adalah tr:

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

tr juga dapat dengan mudah menangani sejumlah ruang variabel:

tr -s ' ' ','

Selain itu, jika tersedia, pgrepdapat berfungsi dengan baik di sini:

top -p $(pgrep -d , program)

Pastikan Anda meninggalkan spasi di antara -ddan ,karena koma adalah argumen (pembatas).

Juga, perhatikan bahwa pgrep akan mengembalikan setiap hasil dari "program" jadi jika Anda memiliki proses yang disebut "program-foo," maka ini juga akan dikembalikan (maka nama pgrep).


Untuk lebih dari satu programtop -p $(pgrep -d, "(nginx|mysql)" )
user2037659


3

Ini berfungsi baik untuk mengawasi lebih dari satu program:

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

Penggunaan yang lebih baik:top -p $(pgrep -d, "(nginx|mysql)" )
user2037659
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.