Voici une réponse que j'ai écrite à une question précédente:
Généralement, si vous souhaitez savoir ce que fait un processus / utilisateur / fichier sans avoir à exécuter lsof 24/7 contre lui, vous utilisez auditctl.
En supposant que vous disposez d'un contrôle d'audit du noyau récent, cela devrait être une opération simple. (Ceci est dans Debian-fu, si vous exécutez la traduction Red Hat comme il convient)
# apt-get install auditd
Assurez-vous que son fonctionnement (/etc/init.d/auditd status).
auditctl -a entry,always -F arch=b64 -S open -F pid=<process id>
Remplacez b64 par b32 si vous exécutez arch 32 bits, open peut être remplacé par n'importe quel appel système ou le mot 'all'
Pour plus d'informations, lisez la page de manuel auditctl.
Vous pouvez utiliser cette méthode et lui demander de surveiller l'appel système «dissocier».
Le paramètre -w est utile pour regarder les fichiers / répertoires, mais comme l'explique la page de manuel, il y a des mises en garde.
-w chemin Insère une surveillance de l'objet du système de fichiers dans chemin. Vous ne pouvez pas insérer une montre dans le répertoire de niveau supérieur. Ceci est interdit par le noyau. Les caractères génériques ne sont pas non plus pris en charge et génèrent un avertissement. La façon dont les montres fonctionnent consiste à suivre l'inode en interne. Cela signifie que si vous placez une surveillance sur un répertoire, vous verrez ce qui semble être des événements de fichier, mais ce n'est vraiment que la mise à jour des métadonnées. Vous pourriez manquer quelques événements en faisant cela. Si vous avez besoin de regarder tous les fichiers d'un répertoire, il est recommandé de placer une surveillance individuelle sur chaque fichier. Contrairement aux règles d'audit syscall, les surveillances n'ont pas d'impact sur les performances en fonction du nombre de règles envoyées au noyau.
Peut-être que l' incron pourrait être utilisé?
la source
Quelques idées. Vous pouvez utiliser
strace
pour voir ce que fait votre application, mais cela peut générer un journal de journaux et ralentir le système.Une autre idée est d'utiliser
inotifywait
, puislsof/fuser
sur le fichier pour voir ce qui l'utilise. Vous pouvez essayer d'exécuter ce script à haute priorité (si vous le pouvez) pour obtenir des informations aussi précises que possible. Il n'attrapera probablement pas l'unlink
appel, car le fichier aura disparu avant la livraison de l'événement.la source
-f
indicateur, pour suivre les enfants.Bien que la recommandation d'audit de fenix semble idéale, vous pouvez trouver un ID de système de fichiers tel que AIDE utile. Malheureusement, il est peu probable qu'il soit suffisamment fin pour ce que vous essayez d'isoler.
J'écrirai souvent des scripts comme solution à des problèmes comme ce que vous décrivez. Si vous ne pouvez pas accomplir ce que vous voulez avec les solutions recommandées, écrivez quelque chose vous-même. Ce n'est souvent pas très compliqué.
la source