No entiendo la salida del comando lsof.
Cuando yo escribo
lsof -p PID
Me salen 4 lineas y cuando escribo
lsof | grep PID
Tengo cientos de líneas.
¿No debería devolver el mismo resultado?
Gracias por sus respuestas. Aquí están los resultados. Parece que es un subproceso o lo que significan estas tareas?
lsof -p 29076
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 29076 pr cwd unknown /proc/29076/cwd (readlink: Permission denied)
java 29076 pr rtd unknown /proc/29076/root (readlink: Permission denied)
java 29076 pr txt unknown /proc/29076/exe (readlink: Permission denied)
java 29076 pr NOFD /proc/29076/fd (opendir: Permission denied)
lsof |grep 29076|head -20
java 29076 pr cwd unknown /proc/29076/cwd (readlink: Permission denied)
java 29076 pr rtd unknown /proc/29076/root (readlink: Permission denied)
java 29076 pr txt unknown /proc/29076/exe (readlink: Permission denied)
java 29076 pr NOFD /proc/29076/fd (opendir: Permission denied)
java 29076 300 pr cwd unknown /proc/29076/task/300/cwd (readlink: Permission denied)
java 29076 300 pr rtd unknown /proc/29076/task/300/root (readlink: Permission denied)
java 29076 300 pr txt unknown /proc/29076/task/300/exe (readlink: Permission denied)
java 29076 300 pr NOFD /proc/29076/task/300/fd (opendir: Permission denied)
java 29076 329 pr cwd unknown /proc/29076/task/329/cwd (readlink: Permission denied)
java 29076 329 pr rtd unknown /proc/29076/task/329/root (readlink: Permission denied)
java 29076 329 pr txt unknown /proc/29076/task/329/exe (readlink: Permission denied)
java 29076 329 pr NOFD /proc/29076/task/329/fd (opendir: Permission denied)
java 29076 330 pr cwd unknown /proc/29076/task/330/cwd (readlink: Permission denied)
java 29076 330 pr rtd unknown /proc/29076/task/330/root (readlink: Permission denied)
java 29076 330 pr txt unknown /proc/29076/task/330/exe (readlink: Permission denied)
java 29076 330 pr NOFD /proc/29076/task/330/fd (opendir: Permission denied)
java 29076 331 pr cwd unknown /proc/29076/task/331/cwd (readlink: Permission denied)
java 29076 331 pr rtd unknown /proc/29076/task/331/root (readlink: Permission denied)
java 29076 331 pr txt unknown /proc/29076/task/331/exe (readlink: Permission denied)
java 29076 331 pr NOFD /proc/29076/task/331/fd (opendir: Permission denied)
lsof: enumera los archivos abiertos, intenta leer la página de manual de lsof
#man lsof
lsof -p PID
enumera los archivos abiertos asociados con la identificación del proceso de PID.En ausencia de opciones, lsof enumera todos los archivos abiertos que pertenecen a todos los procesos activos. cuando lo hace
lsof | grep PID
, enumera todos los archivos abiertos que pertenecen a todos los procesos activos y selecciona el número PID, que puede coincidir con el PID mismo y en cualquier lugar, donde PID aparece como parte de otros PID y también puede ser el proceso secundario de PID, y pronto.Por lo tanto, si desea usar
lsof | grep PID
, debe coincidir exactamente con el PID, como la concordancia de la palabra completalsof | grep -w PID
, pero aún así se generarán más líneas si el PID tiene otros procesos secundarios.fuente
Probé esto en mi sistema, y ambos comandos generan las mismas listas, le sugiero que pruebe ambos comandos consecutivamente varias veces, solo para asegurarse de que el estado del proceso sea estable. Según la página de manual y sus resultados, esta es la única explicación que puedo tener.
fuente
Algunas versiones de lsof incluyen un id de subproceso. Esto puede determinarse por el encabezado de la columna TID aparente en la salida. Tal salida dará lugar a una duplicación de entradas ya que lsof mostrará potencialmente entradas duplicadas una para cada hilo.
https://support.datastax.com/hc/en-us/articles/209826153-lsof-shows-Cassandra-is-holding-a-large-amount-of-files-open
fuente