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

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

프로그램의 인스턴스가 여러 개인 경우 실행하면 다음이 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 등에 익숙하지 않습니다.

답변1

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

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

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

tr -s ' ' ','

또한 사용 가능한 것이 있으면 pgrep여기에서 잘 작동할 수 있습니다.

top -p $(pgrep -d , program)

쉼표는 매개변수(구분자)이므로 -d와 사이에 공백을 남겨 두십시오 .,

또한 pgrep은 "program"에 대한 모든 결과를 반환하므로 "program-foo"라는 프로세스가 있는 경우 해당 결과도 반환됩니다(따라서 pgrep이라는 이름이 붙음).

답변2

sed귀하의 것을 다음으로 바꾸십시오 ,:

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

답변3

이는 여러 프로그램을 모니터링하는 데 유용합니다.

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

관련 정보