Obtenir la liste des fichiers ouverts (descripteurs) dans OS X
je voudrais obtenir une liste des fichiers ouverts dans un processus sur os x (10.9.1). Sous Linux, j'ai pu obtenir ceci à partir de /proc/PID/fd
. Cependant, je ne suis pas sûr de savoir comment obtenir la même chose sur OS X. j'ai trouvé que le procfs n'est pas présent sur L'OS X (par défaut. implémentations possibles, mais je ne veux pas y aller).
alors comment puis-je obtenir (nativement) la liste des fichiers ouverts dans un processus sur OS X. Une façon est lsof
. y a-t-il d'autres formes de soutien disponibles? s'il vous plaît laissez je sais où je peux trouver plus d'infos là-dessus.
Merci.
7 réponses
au moins sur OSX 10.10 (Yosemite, n'a pas vérifié sur Mavericks), vous pouvez obtenir la liste des fichiers ouverts par processus via l'application activity monitor par défaut. Il suffit de double-cliquer sur le processus correspondant sur la liste et de sélectionner "Ouvrir les fichiers et les Ports" onglet sur le popup.
Conseil: cmd+F raccourci sur ce panneau permet de rechercher et de mettre en évidence sur le contenu.
j'ai eu du mal à obtenir Activity Monitor pour afficher des fichiers ouverts pour un processus qui fonctionnait en tant que root (via sudo). La question originale mentionne lsof
, et elle fait exactement le tour. Si vous connaissez le nom du procédé ou PID, c'est super rapide.
trouver des processus par leur nom:
lsof -c processname
trouver les processus par PID:
lsof -p 123
(Préfixe sudo
comme nécessaire, comme si vous n'êtes pas le propriétaire de la processus.)
cela fonctionne pour certaines choses:
sudo fs_usage | grep dev
pour /dev/
fichiers ou similaire.
j'utilise L'application What's Open qui est très handfull (avec filtres, sélection de disques, ...).
vous pouvez le trouver là: http://whatsopen.en.softonic.com/mac .
l'approche propre et simple pour inspecter le processus actuel ( i.e. l'équivalent de /proc/self/fd
sur Linux) est d'utiliser ls /dev/fd/
:
p.ex.
$ touch "file"
$ exec 3<>file
$ ls /dev/fd/
0 1 2 3
puisque vous avez demandé "y a-t-il un autre soutien disponible?", essayez ceci:
créer un outil en ligne de commande en utilisant l'API "proc_pidinfo" c référencée dans la réponse sélectionnée à cette question: Comment puis-je programmer la liste des descripteurs de fichiers ouverts pour un PID donné sur OS X?
vous pouvez utiliser proc_pidinfo avec L'option PROC_PIDLISTFDS pour énumérer les fichiers utilisés par un processus donné. Vous peut ensuite utiliser proc_pidfdinfo sur chaque fichier à tour de rôle avec L'option PROC_PIDFDVNODEPATHINFO pour obtenir son chemin.
Liste des fichiers ouverts sur /Volumes/VolumeName:
lsof | grep "/Volumes/VolumeName"