files – Script Bash que detecta cambios en archivos desde un directorio

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

Leave a Comment

Your email address will not be published. Required fields are marked *

web tasarım