(6 réponses)
Fermé il y a 4 ans.
Étant donné le chemin du fichier, comment puis-je déterminer quel processus le crée (et/ou lit/écrit dessus) ?
Réponse acceptée :
Le lsof La commande (déjà mentionnée dans plusieurs réponses) vous indiquera quel processus a un fichier ouvert au moment où vous l'exécutez. lsof
est disponible pour à peu près toutes les variantes Unix.
lsof /path/to/file
lsof
ne vous parlera pas des fichiers qui ont été ouverts il y a deux microsecondes et fermés il y a une microseconde. Si vous avez besoin de surveiller un fichier particulier et de réagir lorsqu'il est consulté, vous avez besoin d'outils différents.
Si vous pouvez planifier un peu à l'avance, vous pouvez mettre le fichier sur un LoggedFS système de fichiers. LoggedFS est un système de fichiers empilé FUSE qui enregistre tous les accès aux fichiers dans une hiérarchie. Les paramètres de journalisation sont hautement configurables. FUSE est disponible sur tous les principaux Unices. Vous voudrez enregistrer les accès au répertoire où le fichier est créé. Commencez avec l'exemple de fichier de configuration fourni et modifiez-le conformément à ce guide.
loggedfs -l /path/to/log_file -c /path/to/config.xml /path/to/directory
tail -f /path/to/log_file
De nombreux centres proposent d'autres fonctions de surveillance. Sous Linux, vous pouvez utiliser le sous-système d'audit relativement nouveau. Il n'y a pas beaucoup de littérature à ce sujet (mais plus que sur logfs); vous pouvez commencer avec ce tutoriel ou quelques exemples ou simplement avec le auditctl
page de manuel. Ici, cela devrait suffire à s'assurer que le démon est démarré, puis exécutez auditctl
:
auditctl -w /path/to/file
(Je pense que les anciens systèmes ont besoin de auditctl -a exit,always -w /path/to/file
) et regardez les journaux dans /var/log/audit/audit.log
.