Liste ou atualize o conteúdo de um diretório quando modificado (isto é, novo arquivo criado ou arquivo excluído) para um arquivo de texto

0

Eu uso o linux mint e quero que um arquivo de texto reflita as mudanças de arquivos em um diretório, ele deve conter os nomes dos arquivos que existem no diretório e adicionar arquivos recém-criados automaticamente. Eu indiquei alguns links e ele disse que uma boa maneira de fazer isso é usando o inotify-tools . Eu olhei para cima e encontrei este script bash.

#!/bin/sh
while inotifywait -qqe modify path-of-directory ; do 
ls > path-of-text-file;
done

Mas parece que não funciona, gentilmente me guie sobre como fazer isso e será o suficiente se eu adicionar esse script à lista de aplicativos de inicialização para mantê-lo funcionando o tempo todo ou devo usar um crontab ?

    
por Nobody 29.05.2017 / 10:03

1 resposta

0

Este manual indica que modify é acionado quando um arquivo é gravado. Você provavelmente deseja monitorar os eventos create , delete e move .

Verifique se esta resposta mais elaborada a uma pergunta semelhante . Há nohup comando mencionado lá. Outro comando útil pode ser disown .

Acho que o loop inotifywait pode perder um evento quando ocorre durante a execução de ls (porque não há inotifywait em execução neste exato momento). Existem opções -m e -d , elas não devem perder nada. Essa abordagem deve ser um pouco mais confiável:

inotifywait -me create,delete,move path-of-directory | while read a ; do ls > path-of-text-file; done

Agora, inotifywait -m funciona o tempo todo e gera uma linha de texto por evento capturado. Então, cada uma dessas linhas faz com que ls seja executado.

Outra solução será iwatch e seu daemon. Claro que configurar um daemon requer acesso root. Leia minha resposta a outra pergunta e ajuste-a às suas necessidades.

Além disso, você pode estar interessado em LoggedFS - Monitoramento do sistema de arquivos com o FUSE .

    
por 29.05.2017 / 11:03