J'exécute une commande qui met à jour un fichier dans un emplacement inconnu de mon système. Quel est le la find
/ locace
/ quelle que soit la commande qui me dira, quel fichier a été le dernier à mettre à jour sur le système? Cette commande a besoin de savoir pour ne pas regarder dedans proc
ou tout autre lieu non pertinent.
0
strace -o log.txt thecommand
. Le fichier journal affichera tous les appels système, y compris ceux qui aideront à identifier tous les fichiers créés ou écrits par la commande. Chercheropen
etwrite
appels système dans le journal. Vous devrez peut-être aussi regarderchdir
etmmap
les appels à être approfondie.Réponses:
Est-ce que cela vous aide?
Cela vous indique quels fichiers ont été modifiés au cours des 5 dernières minutes et affiche la première ligne.
Vous pouvez bien sûr spécifier de ne rechercher que les fichiers png, par exemple:
Où
/
est le répertoire où la recherche commence - dans ce cas, la racine du système,-name "*.png"
est un filtre pour votre recherche,-mtime -5
est un filtre utilisé pour sélectionner uniquement les fichiers modifiés au cours des 5 dernières minutes et| head -1
prend la sortie de tout ce qui précède le tuyau et n'imprime que la première ligne.N'oubliez pas que, sans le premier filtre, il vérifie également les répertoires. Il est donc conseillé d'utiliser le filtre de nom de fichier.
référence mtime
Edit: Si vous souhaitez exclure certains dossiers, il est probablement préférable d’écrire un script bash comportant N dossiers spécifiés pour la recherche, puis exécutez la commande pour chacun d’entre eux.
Cela signifie que votre script exécuterait:
puis
etc..
la source
/proc
,/boot
et ainsi de suite, je suis intéressé par la commande find qui peut localiser les fichiers de configuration et me laisser savoir lequel a été mis à jour pour la dernière foisfind {location} -mtime -5
où {emplacement} est le chemin d'accès à votre répertoire ou même spécifier un filtre de nom de fichier .. ou vous pouvez rechercher uniquement votre répertoire de base avecfind ~/ -name "*.png" -mtime -5 | head -1
par exemplesudo find / -mtime -5 | grep -v ^/proc/ | grep -v ^/dev/ | grep -v ^/run/ | grep -v ^/sys/ | grep -v ^/var/ | grep -v ^/usr/
. Comme vous pouvez le constater, ce n’est pas trop joli, n’avez-vous pas d’autres suggestions pour automatiser ce processus?vous pouvez voir quels fichiers sont actuellement être changé avec
inotifywait
commander.inotifywait -rme modify /folder/to/monitor/
ceci listera tous les fichiers et répertoires modifiés dans
/folder/to/monitor/
et tous ses subdis.-r
: récursif-m
: surveiller le système de fichiers jusqu'à ce qu'il soit tué par l'utilisateur-e
: spécifier les types d'événements à surveilleret vous pouvez aussi dire à la commande d'ignorer certains répertoires
inotifywait --exclude '^/proc/' -rme modify /
Être conscient que la mise en place d'une telle surveillance sur le système de fichiers complet Cela prendra un certain temps à mettre en place et vous devrez peut-être aussi augmenter la
user_watches
limite (8k par défaut).Cette commande peut être plus appropriée lorsque vous utilisez sur des emplacements spécifiques.
la source