19 votes

Comment déterminer quel processus crée un fichier ?

Deux fichiers sont soudainement apparus dans mon répertoire personnel, appelés "aa" et "err". Ils sont vides. Je me demande comment ils sont arrivés là. J'ai supprimé les fichiers et ils sont à nouveau créés après quelques secondes.

Existe-t-il un moyen de surveiller la création de fichiers dans le répertoire d'origine pour savoir d'où ils viennent ?

Je mentionne que lsof ne pouvait pas aider dans ce cas (j'ai obtenu un résultat vide en utilisant lsof aa )

27voto

Oskar Points 1242

fs_usage est votre outil pour cela.

L'outil d'utilisation du système de fichiers est idéal car il permet d'accéder aux événements du système de fichiers en temps réel et de transférer l'activité dans un fichier ou sur l'écran. Puisque vous connaissez le chemin exact du fichier, vous pouvez filtrer les milliers de changements non pertinents (dans ce cas) du système de fichiers et voir ce qui lit / écrit dans ce fichier assez rapidement.

Si votre répertoire personnel est /Users/me alors vous pouvez filtrer pour /Users/me/aa

mac:~ me$ sudo fs_usage | grep /Users/me/aa
09:35:21  stat64            /Users/me/aa      0.000033   touch       
09:35:21  utimes            /Users/me/aa      0.000104   touch       
09:35:21  fsgetpath         /Users/me/aa      0.000119   Finder      
09:35:22  lstat64           /Users/me/aa      0.000039   fseventsd   
09:35:22  fsgetpath         /Users/me/aa      0.000027   mds         
09:35:22  getattrlist       /Users/me/aa      0.000064   mds         
09:35:22  listxattr         /Users/me/aa      0.000012   mds         
09:35:22  getattrlist       /Users/me/aa      0.000130   mds         
09:35:22  getattrlist       /Users/me/aa      0.000033   mds         
09:35:22  open              /Users/me/aa      0.000071   mdworker_sha
09:35:22    RdData[AT2]     /Users/me/aa      0.000331 W mdworker_sha
09:35:22  getattrlist       /Users/me/aa      0.000042   mds         
09:35:24  lstat64           /Users/me/aa      0.000114   rm          
09:35:24  access            /Users/me/aa      0.000209   rm          
09:35:24  unlink            /Users/me/aa      0.000909   rm          
09:35:25  lstat64           /Users/me/aa      0.000042   fseventsd   
09:35:25  lstat64           /Users/me/aa      0.000006   rm          

(note : j'ai supprimé beaucoup d'espace blanc ci-dessus - la fs_usage produit une grande quantité d'espace vide afin que vous ne puissiez pas facilement voir le touchez à l'extrême droite si je copie/colle la sortie exacte).

Ici, j'utilise le touch pour créer le fichier, y ajouter une chaîne de caractères et ensuite rm à partir de la ligne de commande.

mac:~ me$ touch ~/aa
mac:~ me$ echo foo >> ~/aa
mac:~ me$ rm ~/aa

Il y aura des tonnes d'autres applications qui liront, donc vous pouvez filtrer sur le stat64 et lstat74 s'il y a trop de lectures d'attributs et d'activités ponctuelles autour du fichier une fois qu'il est créé.

La page de manuel de cette commande est assez dense (et n'est pas un "mode d'emploi"), ce qui est typique mais mieux qu'aucune documentation d'Apple sur la façon de l'utiliser.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X