Você pode fazer isso com inotifywait
utility (do pacote inotify-tools
, pelo menos no Debian).
inotifywait
pode pegar nomes de eventos como argumentos e esperar que eles aconteçam no arquivo ou diretório monitorado, antes de retornar. No seu caso, você precisaria usar o evento delete_self
, para indicar que você deseja que o programa retorne quando o arquivo monitorado for excluído.
Então, para copiar um novo arquivo assim que /tmp/fileToMonitor.txt
for removido, você faria:
inotifywait -e delete_self "/tmp/fileToMonitor.txt" && cp new_file "/tmp/fileToMonitor.txt"
Se você quiser começar a monitorar novamente, coloque isso em loop:
while true ; do
inotifywait -e delete_self "/tmp/fileToMonitor.txt" \
&& cp new_file "/tmp/fileToMonitor.txt"
done