`lsof -p <pid>의 차이점은 무엇입니까? wc -l` 및`ls / proc / <pid> / fd | 화장실 -l`? 보았습니다.) 나는 몇 가지 자칭 Linux 전문가에게

배경 : 특정 사용자를 위해 프로세스를 실행하기 위해 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.