macos - muestra - listado de archivos en mac
Obtener una lista de archivos abiertos(descriptores) en OS X (7)
Me gustaría obtener una lista de archivos abiertos en un proceso en os x (10.9.1). En Linux, pude obtener esto de /proc/PID/fd
. Sin embargo, no estoy seguro de cómo obtener lo mismo en OS X. Descubrí que los procfs no están presentes en el sistema operativo X (por defecto, las posibles implementaciones están presentes, pero no quiero ir por ese camino).
Entonces, ¿cómo obtengo (de forma nativa) la lista de archivos abiertos en un proceso en OS X. Una forma es lsof
. ¿Hay algún otro soporte disponible? por favor díganme dónde puedo obtener más información sobre esto.
Gracias.
Al menos en OSX 10.10 (Yosemite, no verificó en Mavericks), puede obtener la lista de archivos abiertos por proceso a través de la aplicación de monitor de actividad predeterminada. Simplemente haga doble clic en el proceso relevante de la lista y seleccione la pestaña "Abrir archivos y puertos" en la ventana emergente.
Consejo: el acceso directo cmd + f en ese panel permite buscar y resaltar el contenido.
Como usted preguntó "¿Hay algún otro soporte disponible [que lsof] disponible?", Intente esto:
Cree una herramienta de línea de comando utilizando la API C de "proc_pidinfo" a la que se hace referencia en la respuesta seleccionada a esta pregunta: ¿Cómo puedo obtener de forma programática la lista de descriptores de archivos abiertos para un PID dado en OS X?
Puede usar proc_pidinfo con la opción PROC_PIDLISTFDS para enumerar los archivos utilizados por un proceso determinado. A continuación, puede usar proc_pidfdinfo en cada archivo por turno con la opción PROC_PIDFDVNODEPATHINFO para obtener su ruta.
El enfoque simple y limpio para inspeccionar el proceso actual ( es decir, el equivalente de /proc/self/fd
en Linux) es usar ls /dev/fd/
:
p.ej
$ touch "file"
$ exec 3<>file
$ ls /dev/fd/
0 1 2 3
Esto funciona para algunas cosas:
sudo fs_usage | grep dev
para /dev/
files o similar.
Lista de archivos abiertos en / Volumes / VolumeName:
lsof | grep "/Volumes/VolumeName"
Me costó conseguir que Activity Monitor muestre archivos abiertos para un proceso que se ejecutaba como root (a través de sudo). La pregunta original menciona lsof
, y hace el truco exactamente. Si conoce el nombre del proceso o PID, es súper rápido.
Buscar procesos por nombre:
lsof -c processname
Buscar procesos por PID:
lsof -p 123
(Prefijo con sudo
según sea necesario, como si no es el propietario del proceso).
Uso la aplicación What''s Open que es muy útil (con filtros, selección de discos, ...).
Puedes encontrarlo allí: http://whatsopen.en.softonic.com/mac .