Pregunta:
Estoy tratando de crear un script que detecte si alguno de los archivos en un directorio se cambió dentro de un intervalo de 2 segundos. Lo que tengo hasta ahora es:
#!/bin/bash
for FILE in "${PWD}/*"
do
SUM1="$(md5sum $FILE)"
sleep 2
SUM2="$(md5sum $FILE)"
if [ "$SUM1" = "$SUM2" ];
then
echo "Identical"
else
echo "Different"
fi
done
Esto genera solo una vez el valor "Idéntico", quiero que verifique cada archivo y muestre "Idéntico" o "Diferente" para cada archivo.
Editar : ¿Se puede hacer esto sin instalar el paquete inotify-tools
?
Respuesta:
Puede usar inotify-tools definitivamente desde la línea de comando, por ejemplo, así:
inotifywait -r -m /dir/to/monitor/
Desde el hombre inotifywait
-m
,--monitor
En lugar de salir después de recibir un solo evento, ejecute indefinidamente. El comportamiento predeterminado es salir después de que ocurra el primer evento.
Y aquí hay un script que monitorea continuamente, copiado del archivo man de inotifywait
:
#!/bin/sh
while inotifywait -e modify /var/log/messages; do
if tail -n1 /var/log/messages | grep apache; then
kdialog --msgbox "Blah blah Apache"
fi
done