Découvrez quel processus écrit dans un répertoire spécifique


19

J'ai un répertoire / some / dir, et je vois que de nouveaux fichiers y apparaissent tout le temps. Comment savoir quel processus crée ces fichiers?

Réponses:


18

Essayez lsof +r2 | grep '/some/dir'. Cela montrera les processus accédant à / certains / dir et sera actualisé toutes les 2 secondes.


2
Thaks, c'est assez proche de ce dont j'ai besoin, car il produit d'abord toute la liste des fichiers ouverts, puis filtre par / certains / dir. Cependant, si les processus créent les fichiers très rapidement et ne les gardent pas ouverts, je comprends que ce qui précède peut même en manquer. Je pense que dans ce cas, la seule option est le sous-système d'audit, non?
homer5439

Votre hypothèse est juste. Une autre idée est d'utiliser inotifywait, voir linux.die.net/man/1/inotifywait
weeheavy

merci, j'avais envisagé des outils inotify auparavant, mais j'ai trouvé qu'ils fonctionnent uniquement au niveau du système de fichiers et ne semblent pas être en mesure de fournir des informations sur qui a fait quoi.
homer5439

18

Utiliser le auditsous-système du noyau

auditctl -w /some/dir/ -p war -k whatsgoingon

Cela établit un hook en attendant que quelque chose se passe sous / some / dir /.

Assurez-vous ensuite que le auditddémon est en cours d'exécution. Après cela, attendez jusqu'à ce que les fichiers apparaissent et voient de /var/log/auditd.logou n'importe où dans votre système écrit et lisez ce qui s'est passé et par quel processus.


Merci, cela ressemble à cela, bien que cela nécessite les outils d'audit installés qui ne sont probablement pas partout par défaut. Mais ok, si l'on a besoin de ces informations, elles peuvent toujours être installées.
homer5439

Remarque pour les personnes qui voient ceci: vous ne pouvez pas placer de montres dans les répertoires de niveau supérieur (interdit par le noyau)
Tony Sepia

1
C'est vraiment un moyen efficace! Merci beaucoup!!! BTW, lorsque vous avez terminé, vous pouvez supprimer tous les crochets pour éviter d'écrire le journal d'audit pour toujours auditctl -D. Vous pouvez utiliser auditctl -lpour répertorier tous les crochets.
Robert

0

lsof peut aider:

# lsof -r1 /some/dir/*

1
Merci. Est-il exact que la commande ci-dessus me dit uniquement qui accède aux fichiers existants mais n'affiche rien pour les fichiers nouvellement créés? Ma compréhension est que / some / dir / * se développe dans la liste des fichiers présents au moment où la commande est invoquée.
homer5439
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.