가장 큰 파일 설명자가 있는 프로세스를 찾으려고 노력 중입니다.
이 솔루션을 찾았습니다.여기
lsof -Fpcn | awk '
/^p/ { pid=substr($0,2) }
/^c/ { cmd=substr($0,2) }
/^n/ { fd[cmd"["pid"]"]++ }
END { for (cc in fd) printf("%-20s %i\n",cc,fd[cc]) } ' | sort -n -k 2
이 명령 세트는 잘 작동합니다.
설명자가 15개 미만인 프로세스를 필터링할 수 있습니다.
프로세스 세부 정보를 지정하려고 하므로
ps에서 프로세스에 대한 정보를 추출하고 싶습니다. 예를 들면 다음과 같습니다.
ps -ef | grep 30394
다음과 같이 필터링할 수 있습니다.
END {
for (cc in fd) {
if(fd[cc] > 15){
printf("%-20s %i\n",cc,fd[cc])
}
}
} ' | sort -n -k 2
하지만 프로세스 정보를 얻는 방법을 모르겠습니다.
ps -ef를 다음과 같이 병합하려고 하면:
printf("%-20s %i process details: %s \n",cc,fd[cc] , "$(ps -ef | grep fd[cc])" ) ;
다음과 같이 인쇄됩니다.
lsof[7626] 17 process details: $(ps -ef | grep fd[cc])