«inotifywait -e close _write» игнорирует новые папки в контрольном каталоге

Предположительно, двоичный файл имеет отсоединенную отладочную информацию ; если gdbможет найти это без какой-либо конкретной конфигурации, это должно быть в одном из

  • файл на основе идентификатора сборки -под /usr/lib/debug/.build-id;
  • файл .debugрядом с двоичным файлом;
  • файл .debugв /frs/alg/alg/bin/.debug;
  • файл .debugв /usr/lib/debug/frs/alg/alg/bin.

Двоичный файл может иметь отладочную ссылку, указывающую на отсоединенную информацию; ищите раздел .gnu_debuglinkв двоичном файле. Чтобы найти его сборку -с идентификатором (, если есть ), найдите раздел с именем .note.gnu.build-idили что-то в этом роде.

1
15.12.2020, 22:58
1 ответ

Причина, по которой вы не видите каталоги, созданные с помощью вашего скрипта, заключается в том, что вы ищете CLOSE_WRITEвместо CREATEсIS_DIR:

inotifywait.           # Terminal 1
Setting up watches.
Watches established.
./ CREATE,ISDIR zz

mkdir zz                # Terminal 2

Теперь, поскольку CREATEтакже может применяться к файлам, вам необходимо проверить тип элемента в процессе принятия решения:

#!/bin/bash
watchDir=/mnt/watched

inotifywait -qre CLOSE_WRITE,CREATE --format $'%e\t%w%f' --monitor "$watchDir" |
    while IFS=$'\t' read -r events item
    do
        if [[ -d "$item" ]]
        then
            echo "New directory '$item'"

        elif [[ "$events" =~ CLOSE_WRITE ]]
        then
            if [[ -f "$item" ]]
            then
                echo "New file '$item'"

            elif [[ -e "$item" ]]
            then
                echo "New unknown item '$item'"
            fi
        fi
    done

Этот код не будет работать для имен файлов или каталогов, которые содержат символы новой строки(touch $'break\nfile')или начинаются с одного или нескольких символов табуляции (touch $'\ttabbed'), так как inotifywaitнельзя использовать строку формата, содержащую нулевой символ(\000). Существует также небольшое состояние гонки, когда событие может сработать, но цель может быть удалена или даже заменена до того, как цикл сможет быть обработан и тип цели оценен.

3
18.03.2021, 22:42

Теги

Похожие вопросы