!["top"으로 특정 프로세스를 선택하는 방법은 무엇입니까?](https://linux55.com/image/704/%22top%22%EC%9C%BC%EB%A1%9C%20%ED%8A%B9%EC%A0%95%20%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%EB%A5%BC%20%EC%84%A0%ED%83%9D%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
프로그램의 인스턴스가 여러 개인 경우 실행하면 다음이 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`