2

Я ищу способ контролировать файл и вызвать событие, как только файл был удален. Как только он будет удален, я заменю / скопирую новый файл и снова включу монитор.

Например

watch "/tmp/fileToMonitor.txt"

// file deleted by some process
cp new_file "/tmp/fileToMonitor.tx"

// watch file again (repeat same steps..)

Как я могу сделать это с помощью bash-скрипта? Это возможно?

1 ответ1

4

Вы можете сделать это с помощью утилиты inotifywait (из пакета inotify-tools , как минимум, под Debian).

inotifywait может принимать имена событий в качестве аргументов и ждать их появления в отслеживаемом файле или каталоге, прежде чем вернуться. В вашем случае вам нужно будет использовать событие delete_self , чтобы указать, что вы хотите, чтобы программа возвращала при удалении отслеживаемого файла.

Таким образом, чтобы скопировать новый файл, как только /tmp/fileToMonitor.txt будет удален, вы должны сделать:

inotifywait -e delete_self "/tmp/fileToMonitor.txt" && cp new_file "/tmp/fileToMonitor.txt"

Если вы хотите начать мониторинг снова, вы можете поместить это в цикл:

while true ; do
  inotifywait -e delete_self "/tmp/fileToMonitor.txt" \
    && cp new_file "/tmp/fileToMonitor.txt"
done

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .