web-dev-qa-db-fra.com

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

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 lesquels *.war les fichiers 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?

22
Martin V.

En fonction de vos besoins exacts, vous voudrez peut-être examiner inotify et/ou FAM / GAMIN solutions.

10
peterph

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

Une commande comme watch find dir/ -mmin 1 peut également aider à vérifier les changements de la dernière minute dans certains répertoires.

Selon ce que vous cherchez 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 informations 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 Java exécuté 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)) en interaction avec le système.

14
knoepfchendruecker

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
9
trankvilezator

Vous pouvez utiliser strace pour 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
6
umläute

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'heure diff.

0
serv-inc