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?

homer5439
la source

Réponses:

18

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

weeheavy
la source
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.

Janne Pikkarainen
la source
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/*
quanta
la source
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