안녕 나는 읽고 여기에 현재 열려있는 파일 설명 자의 수를 얻기의 정확한 방법 lsof를 아니라고. 대신이 명령을 사용하는 것이 좋습니다
cat /proc/sys/fs/file-nr
이 명령은 FD의 수를 표시하지만 위의 명령이 계산 한 열린 파일 디스크립터 목록을 어떻게 표시합니까?
안녕 나는 읽고 여기에 현재 열려있는 파일 설명 자의 수를 얻기의 정확한 방법 lsof를 아니라고. 대신이 명령을 사용하는 것이 좋습니다
cat /proc/sys/fs/file-nr
이 명령은 FD의 수를 표시하지만 위의 명령이 계산 한 열린 파일 디스크립터 목록을 어떻게 표시합니까?
답변:
lsof | wc -l
파일 디스크립터를 계산하지 않는 두 가지 이유 가 있습니다. 하나는 동적으로 링크 된 라이브러리 및 현재 작업 디렉토리와 같이 파일이 열리지 않은 것을 나열한다는 것입니다. 그것들을 걸러 내야합니다. 다른 하나는 lsof
실행 하는 데 시간 이 걸리므로 실행 중에 열거 나 닫은 파일을 놓칠 수 있습니다. 따라서 나열된 열린 파일 수는 대략적인 것입니다. 살펴보면 /proc/sys/fs/file-nr
특정 시점에서 정확한 가치 를 얻을 수 있습니다.
cat /proc/sys/fs/file-nr
정확한 수치가 필요할 때만 유용하며 주로 리소스 소모를 확인합니다. 열린 파일을 나열하려면을 호출 lsof
하거나 /proc/*/fd
수동 으로 트롤링과 같은 동등한 방법을 사용해야 합니다.
/proc/*/fd
디렉토리에는 열린 파일에 대한 심볼릭 링크가 포함되어 있습니다. 육안 검사에는을 사용하십시오 ls -l
. 자동 처리의 readlink
경우 링크 대상을 추출하는 데 사용하십시오.
setrlimit
( ulimit
shell 명령의 기본 시스템 호출) 의 모든 설정은 프로세스별로 이루어집니다. 그것들은 호출하는 프로세스에만 영향을 미칩니다 (간접적으로 포크하는 프로세스).
시스템은 프로세스 정보를 / 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 아래의 나머지 파일을 살펴보십시오 ... 시스템의 많은 유용한 정보가 여기에 있습니다.