프로그램의 인스턴스가 여러 개인 경우 실행하면 다음이 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`