suivi des modifications de fichiers + accès au processus des fichiers

19

Je voudrais voir ce qui se passe dans mes dossiers de serveur d'applications, c'est-à-dire quels fichiers sont modifiés par le processus x ou quels *.warfichiers ont été modifiés (remplacés / créés) au cours des x dernières minutes.

Existe-t-il un outil sous Linux pour vous aider?

Martin V.
la source
Bonjour, essayez de jeter un œil à ce guide pour configurer auditd pour surveiller les répertoires et les fichiers xmodulo.com/how-to-monitor-file-access-on-linux.html
Sifungurux
1
Je suis arrivé à cette question via la recherche Google, mais j'ai trouvé ma réponse ici: unix.stackexchange.com/questions/18844/…
Quentin Skousen
Jetez un œil à SystemTap. uselessuseofcat.com/?p=281
steve

Réponses:

14

Strace (comme indiqué ci-dessus) est un moyen de vérifier les actions d'un logiciel en cours d'exécution spécifié.

Certaines commandes comme watch find dir/ -mmin 1peuvent également aider à vérifier les changements de dernière minute dans certains répertoires.

Selon ce que vous recherchez exactement, inotify-tools est probablement un autre outil commercial ici.

Par exemple, inotifywait -mr dir/surveille les changements dans le répertoire donné et vous donne instantanément des commentaires sur toute application essayant d'ouvrir / lire / écrire / fermer un fichier. Cependant, inotify ne vous donne pas de commentaires sur l'application ou le processus qui accède au fichier - c'est quelque chose que strace fait.

Veuillez noter que la surveillance au niveau du système est généralement d'une utilité limitée pour les logiciels Java exécutés dans un environnement de conteneur d'application, car vous ne voyez que le conteneur (par exemple Tomcat), mais pas l'application réelle (par exemple .war)) interagissant avec le système.

knoepfchendruecker
la source
8

Vous pouvez obtenir des informations sur les fichiers auxquels le processus accède par lsof :

 lsof -n -p `pidof your_app`

Et vice versa, vous pouvez obtenir un pid de processus qui écrit / lit dans un fichier:

 lsof -n -t file
trankvilezator
la source
6

Vous pouvez utiliser stracepour surveiller tous les appels système d'un processus, ce qui inclut tous les accès aux fichiers.

Lors du démarrage d'un programme:

$ strace ./myserver

vous pouvez également attacher strace à un processus en cours d'exécution via son PID:

$ ps aux | grep myserver
me      1859  0.0  0.0  25288   424 ?        Ss   Sep02   0:00 myserver
$ strace -p 1859
umläute
la source
serait génial de surveiller également par dossier et non par PID, merci. btw strace -p PID fonctionne pour moi dans Ubuntu.
Martin V.
0

watch find dir/ -mmin 1 ne fonctionnait pas pour moi, ce qui était simplement copier et diff:

cp -r dir /tmp/olddir
# initialize/whatever
diff -r dir /tmp/olddir

C'est assez gourmand en ressources, mais il montre tous les changements entre l'instantané et l' diffheure.

serv-inc
la source