O que significa “não ser explicitamente ouvido” na página de manual do inotifywait?

1

homem inotifywait:

delete_self A watched file or directory was deleted. After this event the file or directory is no longer being watched. Note that this event can occur even if it is not explicitly being listened for.

unmount The filesystem on which a watched file or directory resides was unmounted. After this event the file or directory is no longer being watched. Note that this event can occur even if it is not explicitly being listened to.

Como entender a média de "que este evento pode ocorrer mesmo que não esteja sendo explicitamente ouvido" na página de manual?

link

    
por illiterate 06.11.2017 / 22:10

2 respostas

1

Isso significa que você pode obter esses eventos mesmo se usou a opção -e e não os especificou. Por exemplo, se você usar

inotifywait -e modify filename

e o arquivo é excluído, você receberá um evento delete_self , mesmo que tenha solicitado apenas modify events.

Isso significa que você precisa verificar o tipo de evento na saída, mesmo que tenha solicitado apenas um evento específico.

    
por 06.11.2017 / 22:24
3

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 é).

    
por 06.11.2017 / 22:27

Tags