맨 위로 정규식 이름을 사용하여 프로세스를 모니터링하는 방법은 무엇입니까?

맨 위로 정규식 이름을 사용하여 프로세스를 모니터링하는 방법은 무엇입니까?

나는 여러 프로세스를 모니터링하기 위해 '#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해당 프로세스는 표시에 포함되지 않습니다.

관련 정보