¿Cómo seleccionar procesos específicos con 'top'?


18

En caso de que un programa tenga varias instancias, la ejecución pidof programproporciona:

`1 2 3`

top -pacepta argumentos separados por comas: 1, 2, 3.

Esto significa que top -p `pidof program`no funcionará:

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

¿Me puede mostrar cómo hacer esto? No estoy familiarizado con awk, sed, etc.

Respuestas:


25

Una alternativa sedpara cosas simples como esta es tr:

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

tr También puede manejar fácilmente un número variable de espacios:

tr -s ' ' ','

Además, si lo tiene disponible, pgreppuede funcionar bien aquí:

top -p $(pgrep -d , program)

Asegúrese de dejar un espacio entre -dy ,ya que la coma es el argumento (el deliminador).

Además, tenga en cuenta que pgrep devolverá todos los resultados de "program", por lo que si tiene un proceso llamado "program-foo", también se devolverá (de ahí el nombre pgrep).


Para más de un programatop -p $(pgrep -d, "(nginx|mysql)" )
usuario2037659

6

sedreemplaza su con ,:

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

3

Esto funciona muy bien para vigilar más de un programa:

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

Mejor uso:top -p $(pgrep -d, "(nginx|mysql)" )
user2037659
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.