배경 : 특정 사용자를 위해 프로세스를 실행하기 위해 ulimit를 모니터링하고 있습니다. (때때로 부정확 한 한계로 시작하는 프로세스를 보았습니다.) 나는 몇 가지 자칭 Linux 전문가에게 물었고 lsof -p <pid>
, 다른 하나는 제안 ls /proc/<pid>/fd
했지만 다른 하나는 제안 했지만, 최대 수에 대한 실제 수를 더 정확하게 반영하는 것은 어느 쪽도 긍정적이지 않았습니다. 프로세스에 대한 열린 파일 제한.
그래서, 그것은 무엇입니까?
lsof -p <pid> | wc -l
또는
ls /proc/<pid>/fd | wc -l
차이점을 자세히 설명하십시오. 감사!
답변
lsof
또한 메모리 매핑 된 .so 파일을 제공합니다. 기술적으로 응용 프로그램이 제어하는 파일 핸들과 동일하지 않습니다. /proc/<pid>/fd
열린 파일 디스크립터의 측정 지점입니다. 그러나 proc-man 페이지에 언급되어 있습니다. 멀티 스레드 프로그램의 메인 스레드가 종료 된 경우이 디렉토리를 사용할 수 없습니다.
lsof -p <pid> | grep -v mem | egrep -v '^COMMAND PID' | wc -l
와 동일한 항목이 표시됩니다 ls /proc/<pid>/fd | wc -l
.
메모리 맵은에서 사용할 수 있습니다 /proc/<pid>/maps
.