Quando você solicita inotifywait para aguardar um evento (ou seja, não no modo --monitor
) e especifica um ou mais tipos de evento (com a opção --event
), ele normalmente não sai até que esse evento específico ocorra . Por exemplo:
$ touch foo
$ inotifywait -e access foo
Setting up watches.
Watches established.
$ echo >>foo
$ cat foo
foo ACCESS
$ $ echo $?
0
$
(As duas colunas representam terminais separados, com linhas em branco inseridas para fazer os eventos saírem em ordem cronológica). Aqui, após o relógio em foo
ser estabelecido, há um evento MODIFY, mas como o filtro de eventos no inotifywait
não inclui MODIFY, nada acontece. O comando inotifywait
só retorna mais tarde quando ocorre um evento ACCESS.
Agora, suponha que o arquivo seja excluído enquanto estiver sendo assistido para acesso.
$ inotifywait -e access foo
Setting up watches.
Watches established.
$ rm foo
$ $ echo $?
1
$
A remoção de foo aciona um evento DELETE_SELF. O comando inotifywait
vê este evento. Não imprime, porque foi dito para relatar somente eventos ACCESS. Mas inotifywait
exits: contava o evento mesmo que não estivesse no filtro. O comando sai com status 1 para indicar que “ocorreu um evento que não estava sendo escutado” (e não foi ignorado, pois a maioria dos eventos não assistidos é).