안녕하세요 잘 읽었습니다여기lsof는 현재 열려 있는 파일 설명자 수를 얻는 정확한 방법이 아닙니다. 그는 대신 이 명령을 사용할 것을 제안했습니다.
cat /proc/sys/fs/file-nr
이 명령은 FD 수를 표시하지만 위 명령으로 방금 계산한 열린 파일 설명자 목록을 표시하는 방법은 무엇입니까?
답변1
lsof | wc -l
파일 설명자는 두 가지 이유로 계산되지 않습니다. 하나는 로드된 동적 링크 라이브러리 및 필터링해야 하는 현재 작업 디렉토리와 같이 열리지 않은 파일의 내용을 나열한다는 것입니다. 또 다른 점은 lsof
실행하는 데 약간의 시간이 걸리기 때문에 실행 중에 열리거나 닫힌 파일을 놓칠 수 있다는 것입니다. 따라서 나열된 열린 파일 수는 대략적인 것입니다. 보기를 통해 /proc/sys/fs/file-nr
특정 시점의 정확한 값을 확인할 수 있습니다.
cat /proc/sys/fs/file-nr
주로 리소스 소진을 확인하기 위해 정확한 숫자가 필요한 경우에만 유용합니다. 열린 파일을 나열하려면 를 호출 lsof
하거나 수동 트롤링과 같은 동등한 방법을 사용해야 합니다 /proc/*/fd
.
답변2
프로세스 정보는 시스템에 의해 /proc 아래의 디렉터리에 동적으로 저장됩니다. 예를 들어 PID가 1234인 프로세스에는 /proc/1234라는 디렉터리가 있습니다.
거기에는 꽤 많은 정보가 있지만 지금은 /proc/1234/에 관심이 있습니다.FD하위 디렉토리.
참고: 프로세스 및 SetUID 프로세스가 소유하지 않은 파일을 보거나 열려면 루트 권한이 필요합니다.
예:
root@johan-HP-ProBook-6560b-LG654EA-ACQ:/proc# ls -l 2443/fd
total 0
lr-x------ 1 johan johan 64 Feb 27 10:26 0 -> pipe:[13637]
l-wx------ 1 johan johan 64 Feb 27 10:26 1 -> /home/johan/.xsession-errors
lrwx------ 1 johan johan 64 Feb 27 10:26 10 -> anon_inode:[eventfd]
lrwx------ 1 johan johan 64 Feb 27 10:26 11 -> anon_inode:[eventfd]
lrwx------ 1 johan johan 64 Feb 27 10:26 12 -> socket:[39495]
lrwx------ 1 johan johan 64 Feb 27 10:26 13 -> anon_inode:[eventfd]
lr-x------ 1 johan johan 64 Feb 27 10:26 14 -> anon_inode:inotify
lrwx------ 1 johan johan 64 Feb 27 10:26 15 -> anon_inode:[eventfd]
l-wx------ 1 johan johan 64 Feb 27 10:26 16 -> pipe:[37885]
lr-x------ 1 johan johan 64 Feb 27 10:26 17 -> pipe:[37886]
l-wx------ 1 johan johan 64 Feb 27 10:26 2 -> /home/johan/.xsession-errors
l-wx------ 1 johan johan 64 Feb 27 10:26 21 -> pipe:[167984]
lr-x------ 1 johan johan 64 Feb 27 10:26 22 -> pipe:[167985]
l-wx------ 1 johan johan 64 Feb 27 10:26 23 -> pipe:[170009]
lr-x------ 1 johan johan 64 Feb 27 10:26 24 -> pipe:[170010]
lrwx------ 1 johan johan 64 Feb 27 10:26 3 -> anon_inode:[eventfd]
lr-x------ 1 johan johan 64 Feb 27 10:26 4 -> pipe:[14726]
lrwx------ 1 johan johan 64 Feb 27 10:26 5 -> socket:[14721]
l-wx------ 1 johan johan 64 Feb 27 10:26 6 -> pipe:[14726]
lrwx------ 1 johan johan 64 Feb 27 10:26 7 -> socket:[14730]
lrwx------ 1 johan johan 64 Feb 27 10:26 8 -> socket:[13984]
lrwx------ 1 johan johan 64 Feb 27 10:26 9 -> socket:[14767]
root@johan-HP:/proc# cat 2443/fdinfo/2
pos: 1244446
flags: 0102001
또한 /proc 아래의 나머지 파일도 살펴보십시오. 시스템에 대한 많은 유용한 정보가 여기에 있습니다.