알아요 lsof
. ls /proc/*/fd
하지만 제가 아는 한, 그들 중 어느 것도 원자적이지 않습니다. 후자의 경우 사용자의 모든 PID를 가져온 다음 이를 기준으로 필터링해야 하기 때문에 그때쯤 일부 파일 설명자가 닫힐 수 있습니다.
사용자의 최대 한도가 소진되면 OS가 FD 생성을 거부하기 때문에 분명히 OS가 해당 번호를 추적하기 때문에 일부 시스템 호출 등이 있을 수 있습니다.
답변1
나는 심층적인 검색을 하지 않았지만 당신이 찾고 있는 것이 Linux에 존재하지 않는 것 같습니다. 파일 설명자를 열려면 전역 잠금이 필요하지 않고 프로세스별 잠금만 필요하므로 멀티 코어 시스템에서는 열린 파일 설명자 수를 계산하는 데 사용하는 모든 것이 다른 스레드가 다른 코어 문서를 열거나 닫는 것과 동시에 실행될 수 있습니다.
Linux에는 열린 파일의 총 개수에 대한 전역 제한이 없습니다. 명확한 사용자별 제한도 없습니다. 사용자당 한도프로세스, 사용자당 열려 있는 파일 수를 간접적으로 제한하지만 명시적으로 추적되지는 않는 파일 설명자 수에 대한 프로세스별 제한도 있습니다.
탐색 /proc
(즉, lsof
뒤에서 수행되는 작업)이 최고입니다. /proc
프로세스에 대한 정보를 얻는 데 사용되는 Linux API입니다.