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.

35
demandé sur codeforester 2014-01-07 18:40:29

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.

30
répondu Fuu 2014-11-11 10:45:27

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.)

31
répondu smitelli 2016-08-02 23:45:32

cela fonctionne pour certaines choses:

sudo fs_usage | grep dev

pour /dev/ fichiers ou similaire.

3
répondu eulerworks 2017-12-26 08:09:16

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 .

2
répondu Laurent Lasudry 2014-01-08 16:36:54

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
2
répondu Travis Clarke 2017-03-06 15:00:49

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.

1
répondu Mike C. 2017-10-07 15:36:32

Liste des fichiers ouverts sur /Volumes/VolumeName:

lsof | grep "/Volumes/VolumeName"
0
répondu Dmitry 2018-05-23 07:43:51