2017-04-24 1 views
0

Il est facile de surveiller les modifications de fichiers avec inotify.but Inotify ne peut répondre à un événement IN_MODIFY qu'avec un nom de fichier et un fichier attr lorsque j'écris dans un fichier.Comment puis-je obtenir le nouveau et la longueur du contenu dans le fichier de changement? Y at-il des API pour résoudre ce problème?Surveillance des modifications de fichier pos et longueur

Répondre

0

Vous pouvez faire de script supplémentaire pour surveillance inotify enregistrer et vérifier les changements dans une liste de fichiers, puis des changements de taille journaling, Exemple:

#!/bin/bash 
for n in `cat /etc/inotify/special_files_list.conf`; do 
    FOUND_CHANGES=`tail -n 10000 /var/log/inotify.log | grep `$cur_date_with_hour` | grep $n` 
    PREVIOUS_FILE_SIZE=`/var/log/inotify-special.log | cut -d ';' -f 0` 
    FILE_SIZE=stat -c "%s" `cut -d ';' -f 0,1` 
    file_size_diff = `expr $PREVIOUS_FILE_SIZE - $FILE_SIZE` 
    if [ file_size_diff !-eq 0 ]; then 
     echo "$FOUND_CHANGES;" >> /var/log/inotify-special.log 
    fi 
done 
... 
+0

Je ne veux pas utiliser diff ou un autre script de contrôle pour obtenir le changer de contenu, je veux savoir est-il un api obtenir cela à partir de linux kernal ou intercepter au niveau des IO tels que drbd directement? – Zeyu

+0

Peut-être que vous pouvez essayer de modifier inotify si ce n'est pas très difficile pour vous et vous avez vraiment besoin de cette fonctionnalité. – Alex