파일 이름 모니터가 켜져 있습니까?

파일 이름 모니터가 켜져 있습니까?

시스템에 열려 있는 모든 파일을 나열하는 방법이 있습니까?

현재 열려 있는 모든 파일을 표시하거나(전체 경로, 어쩌면 일부 lsof옵션 포함), 내 경우에는 더 흥미로운 방법으로 열려 있는 경로 이름을 나열하는 것( 의 방식으로 )이 가능하다고 tail -f생각하지 않습니다 .lsof

답변1

이 프로그램은 inotifywait귀하가 찾고 있는 것과 같은 고성능 파일 모니터링을 위해 설계되었습니다. 개념 증명은 다음과 같습니다.

$ inotifywait -qrm -e open -e access --format "%e %f" tmp/
OPEN hello
OPEN,ISDIR
ACCESS,ISDIR
OPEN hello

출력은 을 실행 touch tmp/hello한 다음 less tmp/h<TAB>(탭 완료 less tmp/hello), Enter 키를 눌러 Less로 파일을 열면 나옵니다.

/proc시스템 전체에서 실행하는 경우 및 같은 위치를 제외할 수 있습니다 /sys. 디렉터리를 제외하도록 파이프할 수도 있습니다 grep -vE '^(OPEN|ACCESS),ISDIR$. 마지막으로 재귀 모니터링에 대한 경고도 살펴봐야 합니다.

경고하다: 큰 트리의 루트를 모니터링할 때 이 옵션을 사용하면 모든 Inotify 모니터링이 완료되기까지 상당한 시간이 걸릴 수 있으며, 이 시간 동안에는 어떤 이벤트도 수신되지 않습니다. 또한 각 하위 디렉터리마다 하나의 Inotify 감시가 설정되므로 사용자당 최대 Inotify 감시 수에 도달할 수 있습니다. 기본 최대값은 8192입니다. /proc/sys/fs/inotify/max_user_watches에 기록하여 늘릴 수 있습니다.

관련 정보