`lsof -p <pid>의 차이점은 무엇입니까? wc -l` 및`ls / proc / <pid> / fd | 화장실 -l`?


13

배경 : 특정 사용자를 위해 프로세스를 실행하기 위해 ulimit를 모니터링하고 있습니다. (때때로 부정확 한 한계로 시작하는 프로세스를 보았습니다.) 나는 몇 가지 자칭 Linux 전문가에게 물었고 lsof -p <pid>, 다른 하나는 제안 ls /proc/<pid>/fd했지만 다른 하나는 제안 했지만, 최대 수에 대한 실제 수를 더 정확하게 반영하는 것은 어느 쪽도 긍정적이지 않았습니다. 프로세스에 대한 열린 파일 제한.

그래서, 그것은 무엇입니까?

lsof -p <pid> | wc -l

또는

ls /proc/<pid>/fd | wc -l

차이점을 자세히 설명하십시오. 감사!


3
숙제처럼 들린다.
ewwhite

1
숙제가 아닙니다. 더 나은 설명을 추가했습니다. lsof맨 페이지를 읽었으며 그 대답이 메모리 매핑 파일 인 것으로 의심되는 동안보다 경험이 풍부한 사람의 확인을 원했습니다.
Jared

답변:


10

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.


lsof거의 동일한 출력을 제공하지만 cwd, rtdtxt파일 디스크립터 도 포함 합니다.
Ian Bamforth

또한 사이 공간의 개수 유의 COMMAND하고 PID변할 수있다. 공백을 [[:space:]]*보다 일반적인 것으로 바꾸십시오.
Ian Bamforth

또한 안드로이드 쉘 ( )은 및을 지원하지 않는 동안 lsof -a -p <pid> -d ^mem -d ^cwd -d ^rtd -d ^txt -d ^DEL | wc -l here 을 찾았 습니다 . 결국 Kvisle 버전을 사용합니다. lsofadb shell-a-d
Weekend
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.