inotify-tools-3.10-alt1 При запуске выдается варнинг: inotifytools.c:722 assertion ( init ) failed: inotifytools_initialize not called yet inotifywait -q -m -e close_write --format "%w%f" /home/boris/tmp/ >> /home/boris/tmp/test.log создаю файл-работает inotifywait -q -m -e close_write --format "%w%f" /home/boris/tmp/ | grep "qwe" >> /home/boris/tmp/test.log создаю файл-не работает НО! inotifywait -q -m -e close_write --format "%w%f" /home/boris/tmp/ | grep "qwe" создаю файл-работает(выводится на экран) inotifywait -q -m -e close_write --format "%w%f" /home/boris/tmp/ | grep "qwe" | xargs echo создаю файл-не работает inotifywait -q -e close_write --format "%w%f" /home/boris/tmp/ | grep "qwe" | xargs echo создаю файл-работает Actual Results: не работает второе перенаправление потока с опцией -m
inotifywait -m сбрасывает вывод после каждого события: на inotify-tools 4.25.9.0-alt1 конструкция `inotifywait -q -m -e close_write --format "%w%f" DIR | cat > файл` отдаёт строку сразу (проверено в контейнере Sisyphus). «Не работает» второе перенаправление из-за grep, а не из-за inotifywait: когда stdout у grep не терминал, он буферизует вывод блоками (~4К), и строка остаётся в буфере grep. С `grep --line-buffered` (или `stdbuf -oL grep`) цепочка `inotifywait -m … | grep --line-buffered qwe | cat > файл` работает — проверено там же. Поэтому в примерах без -m (одно событие и выход) всё видно: буфер сбрасывается при завершении grep. NOTABUG.