Come selezionare processi specifici con 'top'?


18

Nel caso in cui un programma abbia più istanze, l'esecuzione pidof programdà:

`1 2 3`

top -paccetta argomenti separati da virgole: 1, 2, 3.

Ciò significa che top -p `pidof program`non funzionerà:

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

Puoi mostrarmi come fare. Non ho familiarità con awk, sed, ecc ...

Risposte:


25

Un'alternativa a sedcose semplici come questa è tr:

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

tr può anche gestire facilmente un numero variabile di spazi:

tr -s ' ' ','

Inoltre, se lo hai disponibile, pgreppuò funzionare bene qui:

top -p $(pgrep -d , program)

Assicurati di lasciare uno spazio tra -de ,poiché la virgola è l'argomento (il delimitatore).

Inoltre, nota che pgrep restituirà ogni risultato di "programma", quindi se hai un processo chiamato "programma-pippo", anche questo verrà restituito (da qui il nome pgrep).


Per più di un programmatop -p $(pgrep -d, "(nginx|mysql)" )
user2037659 il

6

sedsostituisce il tuo con ,:

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

3

Funziona bene per tenere d'occhio più di un programma:

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

Migliore utilizzo:top -p $(pgrep -d, "(nginx|mysql)" )
user2037659
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.