89 votes

Comment surveiller l'accès aux fichiers pour une application OS X?

Je recherche l'équivalent OS X de FileMon, qui a ensuite été inclus dans ProcessMon.

Au fait, il est essentiel de pouvoir filtrer par processus.

0 votes

Je vais ajouter trois options - étant donné que l'héritage Unix de Mac OS X est différent de l'architecture NT - les outils ne se chevauchent pas parfaitement. Cherchez-vous une API pour programmer ou simplement des outils pour jeter un œil à ce qui se passe actuellement (ou déclencher des actions après un certain changement de fichier)

79voto

Daniel Points 3488

Les Instruments - une partie de la suite de développement Apple Xcode - peut surveiller tous les accès et écritures de fichiers. Ouvrez-le depuis /Applications/Xcode.app/Contents/Applications/Instruments.app, sélectionnez votre application ou processus, et appuyez sur Démarrer. Vous avez de nombreuses options de filtres disponibles dans les menus.

Les anciennes versions de Xcode stockent l'application à /Developer/Applications/Instruments.app

7 votes

À partir de Xcode 5, cet outil se trouve désormais dans /Applications/Xcode.app/Contents/Applications/Instruments.ap‌​p - et peut également être accédé depuis l'application XCode - Xcode->Ouvrir l'outil de développement->Instruments.

2 votes

Cette action ne fonctionne pas si le fichier auquel on tente d'accéder n'existe pas en raison de votre application.

0 votes

En réalité, cela ne fonctionne pas pour OS X : "L'activité d'E/S ne prend pas en charge la Plate-forme macOS". Aussi lire : stackoverflow.com/questions/35621938/…

63voto

Il y a la commande opensnoop. Exécutée sans arguments, elle peut vous submerger de résultats, mais elle peut être exécutée avec l'argument -n nom pour limiter la sortie aux processus nommés nom.

1 votes

De même, sudo opensnoop | grep .classpath vous donne accès à un fichier de chemin de classe, par exemple.

3 votes

Note opensnoop et Instruments sont tous deux des interfaces pour le même moteur DTrace. Autres interfaces : dtrace.org/blogs/brendan/2011/10/10/…

0 votes

Voir apple.stackexchange.com/questions/343423/… si vous souhaitez vous débarrasser de l'erreur dtrace.

21voto

ghoppe Points 7682

Personne n'a mentionné le Moniteur d'activité, trouvé dans le dossier /Applications/Utilitaires.

Cliquez sur le nom du processus dans la liste, puis appuyez sur le bouton "Inspecter" dans la barre d'outils.

Il y a trois onglets dans la fenêtre résultante : Mémoire, Statistiques, Fichiers ouverts et Ports. L'onglet Fichiers ouverts et Ports affichera tous les fichiers ouverts utilisés par le processus.

1 votes

Cela ne fonctionne pas si le fichier est accédé par une application inconnue

16voto

Oskar Points 1242

Launchd est l'outil principal au niveau du système pour surveiller les fichiers (et un dossier est un fichier spécial) car il fonctionne en permanence. Hazel est un programme qui aide à créer une interface graphique agréable autour des WatchPaths de launchd. Consultez ici de nombreux conseils sur launchd ainsi que des centaines de tutoriels, un bon article sur Wikipedia et la documentation de développement d'Apple.

fseventsd enregistrera certains changements - vous pourriez donc utiliser FSeventer ou accéder à ces fichiers si launchd n'est pas votre tasse de thé.

fs_usage et lsof sont des outils en ligne de commande conscients des processus pour accéder au sous-système E/S pendant son exécution. Le tampon fs_usage peut être surchargé, donc si vous voulez quelque chose de plus fiable et moins "jeter un coup d'œil rapide", il est moins fiable pour des résultats corrects totaux que les autres commandes.

0 votes

J'ai utilisé FSEventer plusieurs fois pour savoir à quelles applications un accès. C'est très utile lorsque vous recherchez des fichiers de licence pour le déploiement en laboratoire.

0 votes

Fseventer est excellent pour avoir une vue d'ensemble en temps réel, vous voyez vraiment ce qui se passe!.

2 votes

Depuis que FSeventer est mort, on peut également essayer FSMonitor.

4voto

kOoLiNuS Points 51

lsof

commande sur le Terminal.app peut le faire pour vous ? utilisez le man lsof pour vous familiariser avec son utilisation. Cheers

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