una tienes sierra puede porque por permisos permiso operación necesario mac high externo extension etiquetas duro disco crear completar como carpeta cambiar buscar archivos archivo macos unix lsof

macos - permisos - no se puede completar la operación porque no tienes el permiso necesario high sierra



En Mac OS X, ¿cómo puedo obtener un conteo preciso del uso del descriptor de archivo? (4)

En Linux, ulimit -n se puede usar para cambiar o ver el límite de la cantidad de descriptores de archivo para un proceso, y lsof -p nnn | wc -l lsof -p nnn | wc -l parece informar constantemente el uso real del descriptor de archivo.

Pero en Mac OS X, lsof -p nnn | wc -l lsof -p nnn | wc -l puede devolver un número superior al límite. Supongo que esto significa que lsof está devolviendo algo más que simples descriptores de archivos, pero no puedo decir qué es qué.

En pocas palabras: ¿cómo puedo obtener un recuento exacto del uso del descriptor de archivo en Mac OS X?


lsof puede mostrar muchas cosas más allá de los descriptores de archivos, pero la mayoría de lo que probablemente infle su conteo son los marcos y bibliotecas cargados para una aplicación. Puede ver la columna "FD" para ver si una línea es un descriptor de archivo, en cuyo caso es un número, posiblemente seguido de una letra que indique el modo, o alguna otra cosa (consulte la descripción de la columna FD en el lsof man page para la lista completa).

Si solo necesita una aproximación aproximada, agregue un ''grep -v'' txt '''' antes de que su wc lo acerque mucho más a un valor preciso. Si necesita un valor exacto, probablemente necesite juntar una expresión regular para alimentar la salida a través de los contribuyentes con precisión mediante la columna FD.


Estaba buscando el proceso que tenía muchos descriptores de archivos, así que supongo que algo así como

for pid in `ps aux | awk ''{print $2}''`; do FCOUNT=`lsof -p $pid | grep -v " txt " | wc -l`; echo "PID: $pid $FCOUNT"; done | sort -nk3


Me di cuenta de la necesidad de identificar esto recientemente: el comando que usé para contar el total de entradas (por lo tanto, más que simples identificadores de archivo, pero su relativo, por lo tanto, relevante imo) es:

lsof | awk ''{print $1}'' | uniq -c | sort -rn | head

Esto da algo como la siguiente salida (¡sus aplicaciones más utilizadas pueden ser diferentes!):

$lsof | awk ''{print $1}'' | uniq -c | sort -rn | head 3271 com.apple 2978 Google 914 Atom/x20H 505 Skype 476 Microsoft 375 Screenher 304 Finder 292 Dock 277 Atom/x20H 270 Atom/x20H

Normalmente solo necesito ver las 10 entradas principales, pero puedes manipular la head para mostrar tantas líneas como quieras.


Modifiqué la respuesta de anders, ahora solo muestra los números fd abiertos de un proceso específico:

FCOUNT=`lsof -p $1 | grep -v " txt " | wc -l`;echo "PID: $1 $FCOUNT" | sort -nk3

Ejemplo:

$ ./fd-count.sh 5926 PID: 5926 97