'top'으로 특정 프로세스를 선택하는 방법은 무엇입니까?


18

하나의 프로그램에 여러 인스턴스가있는 경우 실행 pidof program하면 다음이 제공됩니다.

`1 2 3`

top -p쉼표로 구분 된 인수를 허용합니다 1, 2, 3.

이것은 top -p `pidof program`작동하지 않음을 의미합니다 .

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

이 작업을 수행하는 방법을 보여줄 수 있습니까? 나는 awk, sed 등에 익숙하지 않다 ...

답변:


25

sed이와 같은 간단한 것들 에 대한 대안 은 tr다음 과 같습니다 .

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

tr 또한 다양한 수의 공백을 쉽게 처리 할 수 ​​있습니다.

tr -s ' ' ','

또한 사용 가능한 경우 pgrep여기에서 잘 작동 할 수 있습니다.

top -p $(pgrep -d , program)

당신이 사이에 공간을두고 있는지 확인 -d하고 ,쉼표로 인수합니다 (deliminator)을한다.

또한 pgrep은 "program"의 모든 결과를 반환하므로 "program-foo"라는 프로세스가 있으면 이것도 반환됩니다 (따라서 이름은 pgrep).


둘 이상의 프로그램의 경우top -p $(pgrep -d, "(nginx|mysql)" )
user2037659

6

sed당신 으로 대체합니다 ,:

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

3

이것은 하나 이상의 프로그램을 주시하는 데 효과적입니다.

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

더 나은 사용법 :top -p $(pgrep -d, "(nginx|mysql)" )
user2037659
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.