반복 모드에서 Lsof 명령 간격 없음


1

lsof의 타이밍을 어떻게 1 초 이하로 설정할 수 있습니까? lsof -r (반복 모드)에서 최소값은 1 초입니까? 특정 파일에 액세스 한 사용자를 확인하기 위해 2 개의 연속 lsof 명령 사이에 간격을 두지 않고 lsof로 연속 모니터링하는 방법이 있습니까?

답변:


1

현재 디렉토리에서 파일 액세스를 "실시간"으로 모니터하려면 터미널을 열고 다음을 실행하십시오.

inotifywait -r -m -e access --format '%w%f' . | while IFS='' read -r fname; do [ -f "$fname" ] && lsof "$fname"; done

또는 여러 줄에 걸쳐서

inotifywait -r -m -e access --format '%w%f' . | while IFS='' read -r fname
do
    [ -f "$fname" ] && lsof "$fname"
done

이를 지원하는 linux와 같은 OS가 필요합니다 inotifywait.

while루프 몸체는 목적에 맞는 것으로 교체 할 수 있습니다.

옵션의 의미는 다음 inotifywait과 같습니다.

  • -r

    하위 디렉토리를 통해 재귀 적으로 모니터링합니다.

  • -m

    지속적으로 모니터링하십시오.

  • -e access

    ACCESS 이벤트를 모니터하십시오. 관심있는 이벤트가 많이 있지만 요청한 내용과 가장 일치하는 것으로 보입니다.

  • --format '%w%f'

    액세스 한 각 파일의 경로와 파일을 표준 출력에 기록하십시오.

  • .

    현재 디렉토리를 모니터링하십시오 ..

한정

위의 코드는 줄 바꿈 문자가 포함 된 파일 이름을 처리하지 않습니다. 이를 처리하려면 -csvCSV 형식의 미묘함을 이해하는 더 많은 코드와 함께 inotifywait의 옵션 을 사용해야 합니다.


1

inotifywait설치 하지 않은 경우 (이에 이상적임) 다음 lsof과 결합하면 실시간에 더 가까이 갈 수 있습니다 watch.

$ watch -n0.1 lsof

이것은 0.11 초 마다 업데이트됩니다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.