lsof 출력 불일치 [닫기]

lsof 출력 불일치 [닫기]

나는 컴퓨터에서 여러 개의 Java 프로세스를 실행하고 있으며 열린 파일 수와 해당 파일 유형을 정확하게 계산하고 싶습니다.

첫째, 달리기에는 sudo lsof시간이 오래 걸린다.

[user@host]:~$ time sudo lsof > lsof.txt

real    1m5.920s
user    0m27.152s
sys 0m38.100s

Java 프로세스에서 열린 파일 수를 확인하십시오.

[user@host]:~$ grep -e "^java" lsof.txt -c
2565341

이는 비정상적으로 높은 수치입니다.

lsof플래그로 출력을 필터링하여 동일한 숫자를 얻으 려고 하면 -c완전히 다른 대답을 얻게 되며 lsof첫 번째 명령에 비해 시간이 거의 걸리지 않습니다.

[user@host]:~$ time sudo lsof -c java | wc -l
4465

real    0m0.139s
user    0m0.052s
sys 0m0.068s

답변1

속도가 일관되지 않는 이유는 소켓도 파일이고 NFS에서 stat() 수행과 같은 기타 네트워크 관련 작업이기 때문입니다. lsof -b이를 실행하여 이러한 작업을 건너 뛸 수 있습니다 .

행 수의 차이는 결과를 직접 확인해야 합니다. 때로는 결과를 정렬한 다음 비교하는 것이 도움이 됩니다.

    sort lsof.txt > lsof-full-sorted.txt
    diff lsof-full-sorted.txt lsof-filtered-sorted.txt

(내 예에서는 lsof-filtered-sorted.txt가 출력을 나타냅니다 lsof -c java|sort)

또한 Midnight Commander에는 diff 출력보다 읽기 쉬운 멋진 diff 기반 파일 비교 기능이 있습니다.

관련 정보