2009-07-25 3 views
11

J'ai trouvé dans IOStat, qu'une partie de mon application écrit beaucoup, mais je ne sais pas quel processus il est et dans quels fichiers il écrit. Dans Vista il y a un outil pour montrer les fichiers qui ont été actifs dans les 30 dernières secondes. Y a-t-il quelque chose de similaire pour Linux?Outil qui me montre quels fichiers sont écrits sous Linux?

+0

Jus Par curiosité: je connais Filemon, mais de quel outil de Vista parlez-vous? –

+0

@Ludwig Panneau de configuration -> Outils d'administration -> Moniteur de fiabilité et de performances. Puis cliquez sur la barre qui dit disque. Il montre les fichiers les plus actifs et les processus qui sont en lecture ou en écriture. –

+0

Il est déjà sur ServerFault: http: // serverfault.com/questions/224629/see-what-files-are-being-write-to-like-iotop-but-for-files-not-processes –

Répondre

3

Ce que vous cherchez est lsof. C'est un outil en ligne de commande mais il y a aussi un GUI for it at sourceforge.

+3

lsof ne va que vous montrer les fichiers que le processus a ouverts maintenant PiedPiper

3

Pour trouver tous les fichiers modifiés dans les dernières 24 heures (du dernier jour complet) dans un répertoire spécifique particulier et ses sous-répertoires :

trouver/directory_path -mtime -1 -print

plus:

http://www.mydigitallife.info/2006/01/19/find-files-that-are-modified-today-or-since-certain-time-ago-in-unix/

+0

Et y a-t-il aussi un moyen de surveiller l'activité (lire écrire kb/s) sur des fichiers individuels? Le serveur est assez actif et beaucoup de fichiers sont changés, mais j'ai besoin de ceux qui ont le plus de transfert ... – smint

2

Pas sûr d'un programme mais la commande find de l'utilitaire a beaucoup d'options qui vous permettront de trouver des fichiers et/ou des répertoires qui ont été modifiés dans un certain laps de temps.

Par exemple:

$ find /home/you -iname "*.txt" -mtime -1 -print 

trouverais des fichiers texte qui ont été modifiés il y a 1 derniers jours.

Vous pouvez inclure cet appel dans une sorte de script ou écrire votre propre petite application pour utiliser les résultats.

Voici un site avec quelques autres informations et exemples:

http://www.cyberciti.biz/faq/howto-finding-files-by-date/

1

Linux fournit une API de notification de modification de fichier appelée "dnotify", ainsi qu'un utilitaire de ligne de commande dnotify. Vous pouvez l'utiliser pour suivre les changements au cours des 30 dernières années.

J'écrirais probablement une application qui se construit directement sur l'API Linux, et rejette tous les événements de plus de 30 ans.

+0

Merci, j'espérais qu'il y a déjà quelque chose existant. – smint

1

lsof liste tous les fichiers ouverts pour un processus donné:

lsof -p

7
strace -e trace=file -- <command> 

va vous montrer exactement quels fichiers votre application est en train de lire et writong

+0

Travaillera-t-il sur un arbre de processus entier ou sur un seul processus? –

+0

Il ne fonctionnera pas sur un arbre entier mais vous pouvez utiliser l'option '-p pid' pour attacher jusqu'à 32 processus – PiedPiper

+2

ou utiliser '-f' pour tracer les processus fils tels qu'ils sont créés par les processus actuellement tracés. de l'appel système fourche (2) – PiedPiper

5

Si vous voulez voir tous les accès aux fichiers en temps réel (jusqu'à 32 processus), vous pouvez utiliser cette commande:

strace -f -e trace=file `ps aux | tail -n +2 | awk '{ORS=" "; print $2}' | sed -e 's/\([0-9]*\)/\-p \1 /g' | sed -e 's/\-p $//g'` 
Questions connexes