Вы можете сделать это с помощью утилиты 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