files – ¿Cómo encontrar los archivos abiertos más grandes?

Pregunta:

Buscando los más grandes entre los archivos abiertos por todos los procesos. lsof ya tiene los archivos abiertos con sus tamaños. Puede estar pasando los parámetros correctos a lsof y procesando la salida.

Respuesta:

Puede usar la opción -F de lsof para obtener una salida casi inequívoca que se puede analizar por máquina con solo un dolor moderado . La salida es ambigua porque lsof reescribe las líneas nuevas en los nombres de archivo en \n .

La salida lsof consta de un campo por línea. El primer carácter de cada nombre indica el tipo de campo y el resto de la línea es el valor del campo. Los campos son: p = PID (solo para el primer descriptor en un proceso dado), f = descriptor, t = tipo ( REG para archivos normales, el único tipo que tiene un tamaño), s = tamaño (solo si está disponible), n = nombre. El código awk siguiente recopila entradas que tienen un tamaño e imprime el tamaño y el nombre del archivo. El resto de las canalizaciones ordena la salida y retiene la entrada con el tamaño más grande.

lsof -Fnst | awk '
    { field = substr($0,1,1); sub(/^./,""); }
    field == "p" { pid = $0; }
    field == "t" { if ($0 == "REG") size = 0; else next; }
    field == "s" { size = $0; }
    field == "n" && size != 0 { print size, $0; }
' | sort -k1n -u | tail -n42 | sed 's/^[0-9]* //'

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top

web tasarım