남자 inotify 기다려:
delete_self가 모니터링하는 파일 또는 디렉터리가 삭제되었습니다. 이 이벤트 후에는 파일이나 디렉터리가 더 이상 모니터링되지 않습니다. 이 이벤트를 명시적으로 수신하지 않는 경우에도 이 이벤트가 발생할 수 있습니다.
unmount 모니터링되는 파일 또는 디렉터리가 있는 파일 시스템이 마운트 해제되었습니다. 이 이벤트 후에는 파일이나 디렉터리가 더 이상 모니터링되지 않습니다. 이 이벤트를 명시적으로 수신하지 않는 경우에도 이 이벤트가 발생할 수 있습니다.
해당 매뉴얼 페이지에서 "이벤트가 명시적으로 청취되지 않은 경우에도 이벤트가 발생할 수 있다"는 의미를 어떻게 이해합니까?
https://manpages.debian.org/stretch/inotify-tools/inotifywait.1.en.html
답변1
inotifywait에게 이벤트(즉, --monitor
패턴이 아닌)를 기다리도록 요청하고 하나 이상의 이벤트 유형을 지정하면( options 사용 --event
) 일반적으로 해당 특정 이벤트가 발생할 때까지 종료되지 않습니다. 예를 들어:
$ touch foo
$ inotifywait -e access foo
Setting up watches.
Watches established.
$ echo >>foo
$ cat foo
foo ACCESS
$ $ echo $?
0
$
(두 열은 개별 단말기를 나타내며, 빈 행을 삽입하여 이벤트가 시간순으로 나타나도록 합니다.) 여기서 시계를 설정한 후 foo
MODIFY 이벤트가 있지만 이벤트 필터에 inotifywait
MODIFY가 포함되어 있지 않기 때문에 아무 일도 일어나지 않습니다. 이 inotifywait
명령은 ACCESS 이벤트가 발생한 후에만 반환됩니다.
이제 액세스를 모니터링하는 동안 파일이 삭제되었다고 가정합니다.
$ inotifywait -e access foo
Setting up watches.
Watches established.
$ rm foo
$ $ echo $?
1
$
foo를 삭제하면 DELETE_SELF 이벤트가 트리거됩니다. 이 inotifywait
명령은 이 이벤트를 확인합니다. ACCESS 이벤트만 보고하도록 되어 있으므로 인쇄되지 않습니다. 그러나 inotifywait
종료: 필터에 없더라도 이벤트를 계산합니다. 명령은 상태 1로 종료됩니다. 이는 "청취되지 않은 이벤트가 발생했습니다"(대부분의 모니터링되지 않는 이벤트처럼 무시되지 않음)를 의미합니다.
답변2
이는 이 옵션을 사용하지만 지정하지 않은 경우에도 -e
이러한 이벤트를 얻을 수 있음 을 의미합니다. 예를 들어, 다음을 사용하는 경우
inotifywait -e modify filename
delete_self
해당 파일이 삭제 되면 이벤트를 신청만 하신 경우에도 이벤트를 받게 됩니다 modify
.
이는 특정 이벤트만 요청한 경우에도 출력에서 이벤트 유형을 확인해야 함을 의미합니다.