¿Cuál es la diferencia entre `lsof -p <pid> | wc -l` y `ls / proc / <pid> / fd | wc -l`?


12

Antecedentes: estoy jugando monitoreando el ulimit para ejecutar procesos para un usuario en particular. (Ocasionalmente había visto procesos que comenzaban con un límite incorrecto). Pregunté a un par de gurús de Linux autoproclamados, y uno sugirió lsof -p <pid>, mientras que el otro sugirió ls /proc/<pid>/fd, pero ninguno fue positivo sobre cuál refleja con mayor precisión el conteo real hacia el máximo Límite de archivos abiertos para un proceso.

Entonces, cual es?

lsof -p <pid> | wc -l

O

ls /proc/<pid>/fd | wc -l

Por favor, explique la diferencia. ¡Gracias!


3
Suena como tarea.
— ewwhite

1
No tarea. Se agregó una mejor explicación. Había leído las lsofpáginas del manual, y aunque sospechaba que la respuesta eran archivos mapeados en memoria, quería la confirmación de una persona más experimentada.
— Jared

Respuestas:


10

lsoftambién le proporcionará archivos .so asignados en memoria, que técnicamente no es lo mismo que un identificador de archivo sobre el que la aplicación tiene control. /proc/<pid>/fdes el punto de medición para los descriptores de archivos abiertos, sin embargo: Mencionado en la página proc-man, si el hilo principal de un programa multiproceso ha finalizado, este directorio no estará disponible.

lsof -p <pid> | grep -v mem | egrep -v '^COMMAND PID' | wc -lle mostrará los mismos artículos que ls /proc/<pid>/fd | wc -l.

Los mapas de memoria están disponibles en /proc/<pid>/maps.


El lsofle da casi la misma potencia, pero también incluye cwd, rtdy txtdescriptores de fichero.
— Ian Bamforth

También tenga en cuenta que el número de espacios entre COMMANDy PIDpuede variar. Reemplace los espacios con [[:space:]]*para hacerlo más general.
— Ian Bamforth

También encontré lsof -a -p <pid> -d ^mem -d ^cwd -d ^rtd -d ^txt -d ^DEL | wc -l aquí , mientras que lsofen Android shell ( adb shell) no es compatible -ay -d. Así que finalmente uso la versión de Kvisle.
— Fin de semana
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.