다음을 사용하여 Solaris 운영 체제에서 현재 활성화되어 있고 할당된 파일 설명자의 총 수를 얻을 수 있습니다.
echo ::kmastat | sudo mdb -k| grep file_cache
그러나 mdb에는 슈퍼유저 권한이 필요합니다.
슈퍼유저 권한 없이 동일한 작업을 수행하는 명령이 있습니까? 아니면 가능합니까?
운영 체제 정보:오라클 솔라리스 11.4 X86
답변1
정의에 따르면 일반 사용자는 루트가 소유한 파일을 볼 수 없기 때문에 열린 파일을 추가하는 명령을 실행할 수 없습니다(객체를 파괴하는 필수 권한이 없는 한).
mdb 명령을 실행하려면 루트 개인 정보 보호를 적극적으로 중단하고 sudoers 파일(Solaris > 버전 11)에 사용자를 추가하거나 루트 소유 파일에 대한 읽기 액세스 권한이 있는 그룹에 사용자를 추가해야 합니다.
바라보다file-nr과 lsof가 열린 파일을 다르게 계산하는 이유는 무엇입니까?파일 처리기 계산 및 열린 "파일" 나열에 대한 정보 - 총 개수는 파일로 계산되는 폴더 등에 따라 달라집니다.
Solaris의 경우 프로세스별로 열린 파일 수를 계산할 수 있습니다. 또는 루트 파일을 볼 수 있어야 하고 "lsof"를 사용합니다.
lsof | wc -l
단일 프로세스의 경우 PID에 대해 "pfiles"를 실행할 수 있습니다. 바라보다괴짜 일기더 알아보기.
그러나 아마도 ps를 사용한 다음 pfiles를 사용해 보십시오:
ps -A | awk '{print $1}' | xargs pfiles
그런 다음 awk를 사용하여 합계를 추가합니다.
또한 find를 사용해 보았지만 소켓 등도 나열하기 때문에 혼란스럽습니다.
find /proc/*/fd/ * -type f | grep -v "Permission denied" | wc -l