Comment trouver le fichier qui a été mis à jour pour la dernière fois sur ma machine Linux?


0

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.


Si vous pouvez exécuter la commande à nouveau, exécutez 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. Chercher open et write appels système dans le journal. Vous devrez peut-être aussi regarder chdir et mmap les appels à être approfondie.
Mark Plotnick

En fait c'est une excellente idée. Ce n’est pas aussi propre que je le voulais mais j’en ferai le tour.
e271p314

Réponses:


1

Est-ce que cela vous aide?

find / -mtime -5 | head -1

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:

find / -name "*.png" -mtime -5 | head -1

/ 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:

find /your/first/folder -name "*.png" -mtime -5 | head -1

puis

find /your/second/folder/location -name "*.png" -mtime -5 | head -1

etc..


Mais cela ressemblera à bien des endroits qui ne sont pas pertinents, comme /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 fois

1
Eh bien, si vous savez où ils se trouvent, utilisez simplement find {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 avec find ~/ -name "*.png" -mtime -5 | head -1 par exemple

2
en d'autres termes: vous ne pouvez pas trouver quelque chose quelque part si vous ne regardez pas à cet endroit - spécifiez où regarder ou cherchez tout

1
Eh bien, votre réponse a été utile en quelque sorte. J'ai dû filtrer les résultats qui ne correspondaient pas à l'emplacement des fichiers de configuration pour trouver ce que je cherchais, quelque chose comme: sudo 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?

Comme je l'ai mentionné: écrivez un script n'utilisant que les dossiers pertinents à chaque recherche. Malheureusement, rien d'autre ne me vient à l'esprit pour le moment :(

0

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 à surveiller

et 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).

Veuillez augmenter le nombre de montres inotify autorisées par utilisateur via `/ proc / sys / fs / inotify / max_user_watches '

Cette commande peut être plus appropriée lorsque vous utilisez sur des emplacements spécifiques.


En effet, commande intéressante que je ne connaissais pas, mais mon problème principal est que je dois regarder dans le répertoire racine car je ne peux pas savoir avec certitude où se trouve le fichier de configuration que je cherche, donc je ne peux en créer hypothèses sur le répertoire qui le contient.
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.