나는 '#top -p 22055,21995'와 같은 여러 프로세스를 모니터링합니다. 그러나 그 중 많은 프로세스가 fwk*로 시작합니다(예: fwk3_dev, fwk5_dev).
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
22055 admin 0 -20 832m 302m 41m S 20 2.5 14973:53 fwk3_dev
21995 admin 0 -20 834m 304m 41m S 14 2.6 10179:55 fwk5_dev
프로세스 fwk*의 정규식 이름을 사용하여 모니터링하는 방법 'fwk'에서 시작하는 모든 프로세스를 의미합니까?
답변1
top
이 작업 자체는 수행되지 않지만 top
배치 모드( -b
옵션)에서 실행되는 간단한 쉘 스크립트를 작성하여 필터링할 수 있습니다.저것grep을 사용하고 루프에서. 대화식은 아닙니다.
예를 들어
while :; do clear; top -b -n 1 |grep ' fwk' ;sleep 1; done
grep
옵션이 주어지면 정규식을 인식합니다 -E
. 그러나 귀하의 예는 앞에 공백과 "fwk"만 사용하여 처리할 수 있습니다(동일한 이름을 가진 사용자가 없는 한).
일부 버전top
-d
배치 모드에서 한 번만 실행하려면 다른 옵션(예: )이 필요할 수 있습니다 .
답변2
# first generate a comma-separated list of matching PIDs
pids=$(ps a -o pid,args | awk '/[f]wk/ {print $1}' | xargs | sed -e 's/ /,/g')
# then run top with that list
top -p $pids
참고: fwk*
목록 생성과 실행 사이의 짧은 시간 내에 프로세스가 시작되면 top
해당 프로세스는 디스플레이에 포함되지 않습니다.