- SINOPSIS
- DESCRIPCIÓN
- OPCIONES
- AFS
- SEGURIDAD
- SALIDA
- BLOQUEOS
- SALIDA PARA OTROS PROGRAMAS
- BLOQUEOS Y TIEMPOS DE ESPERA
- EVITAR BLOQUEOS DEL NÚCLEO
- NÚMEROS DE DISPOSITIVO ALTERNATIVOS
- CACHÉ DE NOMBRES DEL NÚCLEO
- ARCHIVO DE CACHÉ DE DISPOSITIVOS
- PERMISOS DE LSOF QUE A AFFECTAN EL ACCESO AL ARCHIVO DE CACHÉ DE DISPOSITIVOS
- RUTA DEL ARCHIVO DE CACHÉ DE DISPOSITIVOS DE LA OPCIÓN -D
- RUTA DEL CACHÉ DE DISPOSITIVOS DESDE UNA VARIABLE DE ENTORNO
- RUTA DEL CACHÉ DE DISPOSITIVOS A NIVEL DE SISTEMA
- RUTA DEL CACHÉ DE DISPOSITIVOS PERSONAL (PREDETERMINADA)
- RUTA MODIFICADA DEL ARCHIVO DE CACHÉ DE DISPOSITIVOS PERSONALES
- DIAGNÓSTICOS
- EJEMPLOS
- ERRORES
- ENTORNO
- PREGUNTAS FRECUENTES
- ARCHIVOS
- AUTORES
- DISTRIBUCIÓN
- VÉASE TAMBIÉN
lsof - listar archivos abiertos
SINOPSIS
lsof [ -?abChHlnNOPQRtUvVX ] [ -A A ] [ -c c ] [ +c c ] [ +|-d d ] [ +|-D D ] [ +|-e s ] [ +|-E ]
[ +|-f [cfgGn] ] [ -F [f] ] [ -g [s] ] [ -i [i] ] [ -k k ] [ -K k ] [ +|-L [l] ] [ +|-m m ] [
+|-M ] [ -o [o] ] [ -p s ] [ +|-r [t[m<fmt>]] ] [ -s [p:s] ] [ -S [t] ] [ -T [t] ] [ -u s ] [
+|-w ] [ -x [fl] ] [ -z [z] ] [ -Z [Z] ] [ -- ] [nombres]
DESCRIPCIÓN
Lsof revisión 4.99.4 lista en su salida estándar información de archivos abiertos por procesos para los siguientes dialectos UNIX:
Apple Darwin 9, Mac OS X 10, macOS 11 y superior
FreeBSD 8.2 y superior
Linux 2.1.72 y superior
NetBSD 1.2 y superior
OpenBSD 7.2 y superior
Solaris 9, 10 y 11 y superior
OpenIndiana 5.11 y superior
(Consulte la sección DISTRIBUCIÓN de esta página de manual para obtener información sobre cómo obtener la última revisión de lsof).
Un archivo abierto puede ser un archivo regular, un directorio, un archivo especial de bloque, un archivo especial de caracteres, una referencia de texto en ejecución, una biblioteca, una transmisión o un archivo de red (socket de Internet, archivo NFS o socket de dominio UNIX). Se puede seleccionar un archivo específico o todos los archivos en un sistema de archivos por ruta.
En lugar de una pantalla con formato, lsof producirá una salida que puede ser analizada por otros programas. Consulte la descripción de la opción -F y la sección SALIDA PARA OTROS PROGRAMAS para obtener más información.
Además de producir una única lista de salida, lsof se ejecutará en modo repetitivo. En modo repetitivo, producirá una salida, esperará y luego repetirá la operación de salida hasta que se detenga con una señal de interrupción o de salida. Consulte la descripción de la opción +|-r [t[m<fmt>]] para obtener más información.
OPCIONES
En ausencia de opciones, lsof lista todos los archivos abiertos que pertenecen a todos los procesos activos.
Si se especifica alguna opción de solicitud de lista, las demás solicitudes de lista deben solicitarse específicamente, por ejemplo, si se especifica -U para la lista de archivos de socket UNIX, los archivos NFS no se listarán a menos que también se especifique -N; o si se especifica una lista de usuarios con la opción -u, los archivos de socket de dominio UNIX que pertenecen a usuarios que no están en la lista no se listarán a menos que también se especifique la opción -U.
Normalmente, las opciones de lista que se especifican son OR, es decir, especificar la opción -i sin una dirección y la opción -ufoo produce una lista de todos los archivos de red O archivos que pertenecen a los procesos propiedad del usuario "foo". Las excepciones son:
1 el nombre de inicio de sesión o el ID de usuario (UID) negado, especificado con la opción -u;
2 el ID de proceso (PID) negado, especificado con la opción -p;
3 el ID de grupo de procesos (PGID) negado, especificado con la opción -g;
4 el comando `^` (negado), especificado con la opción -c;
5 los nombres de estado de protocolo TCP o UDP negados (`^`), especificados con la opción -s [p:s].
Dado que representan exclusiones, se aplican sin usar OR o AND y tienen efecto antes de que se apliquen cualquier otro criterio de selección.
La opción -a se puede utilizar para combinar las selecciones con AND. Por ejemplo, especificar -a, -U y -ufoo produce una lista de solo archivos de socket UNIX que pertenecen a procesos propiedad del usuario ``foo''.
Precaución: la opción -a hace que todas las opciones de selección de lista se combinen con AND; no se puede utilizar para combinar opciones de selección seleccionadas colocando entre ellas, aunque su ubicación allí sea aceptable. Dondequiera que se coloque -a, hace que se combinen todas las opciones de selección con AND.
Los elementos del mismo conjunto de selección (nombres de comandos, descriptores de archivos, direcciones de red, identificadores de proceso, identificadores de usuario, nombres de zona, contextos de seguridad) se combinan en un solo conjunto OR y se aplican antes de que el resultado participe en la combinación con AND. Por lo tanto, por ejemplo, especificar -, -, -a y -ufff,ggg seleccionará la lista de archivos que pertenecen a cualquiera de los inicios de sesión fff'' Oggg'' Y tienen conexiones de red a cualquiera de los hosts aaa.bbb O ccc.ddd.
Las opciones se pueden agrupar después de un solo prefijo; por ejemplo, el conjunto de opciones -a -b -C'' se puede indicar como -abC. Sin embargo, dado que los valores son opcionales después de +|-f, -F, -g, -i, +|-L, -o, +|-r, -s, -S, -T, -x y -z, cuando no tiene valores para ellos, tenga cuidado de que el carácter siguiente no sea ambiguo. Por ejemplo, -Fn podría representar las opciones -F y -n, o podría representar el carácter de identificador de campo n que sigue a la opción -F. Cuando es posible la ambigüedad, comience una nueva opción con un carácter-''; por ejemplo, -F -n''. Si la siguiente opción es un nombre de archivo, siga la opción posiblemente ambigua con--''; por ejemplo, ``-F -- name''.
Ya sea el prefijo +' o el prefijo-'' se puede aplicar a un grupo de opciones. Las opciones que no tienen significados separados para cada prefijo (por ejemplo, -i) se pueden agrupar bajo cualquiera de los prefijos. Por lo tanto, por ejemplo, +M -i'' se puede indicar como+Mi'' y el grupo tiene el mismo significado que las opciones separadas. Tenga cuidado al agrupar prefijos cuando una o más opciones en el grupo tienen significados separados bajo diferentes prefijos; por ejemplo, +|-M; -iM'' no es la misma solicitud que-i +M''. Cuando tenga dudas, utilice opciones separadas con los prefijos apropiados.
-? -h Estas dos opciones equivalentes seleccionan una lista de resultados de ayuda (uso). Lsof muestra una forma abreviada de esta salida cuando detecta un error en las opciones proporcionadas, después de mostrar los mensajes que explican cada error. (Escape el carácter ``?' tal como lo requiere su shell).
-a causa que las opciones de selección de lista se combinen con AND, como se describe anteriormente.
-A A está disponible en sistemas configurados para AFS cuyos códigos de kernel AFS se implementan mediante módulos dinámicos. Permite que el usuario de lsof especifique A como un archivo de lista de nombres alternativo donde se pueden encontrar las direcciones de kernel de los módulos dinámicos. Consulte las preguntas frecuentes de lsof (la sección de preguntas frecuentes indica su ubicación) para obtener más información sobre los módulos dinámicos, sus símbolos y cómo afectan a lsof.
-b provoca que lsof evite las funciones del kernel que podrían bloquear: lstat(2), [readlink]({filename}../../readlink)(2) y
[stat]({filename}../../stat)(2).
Consulte las secciones BLOCKS AND TIMEOUTS y AVOIDING KERNEL BLOCKS para obtener información sobre el uso de esta opción.
-c c selecciona la lista de archivos para los procesos que ejecutan el comando que comienza con los
caracteres de c. Se pueden especificar varios comandos utilizando múltiples opciones -c.
Se combinan en un único conjunto OR antes de participar en la selección de la opción AND.
Si c comienza con un \`^\', los caracteres siguientes especifican un nombre de comando cuyos
procesos deben ignorarse (excluirse).
Si c comienza y termina con una barra ('/'), los caracteres entre las barras se interpretan como una expresión regular. Los metacaracteres del shell en la expresión regular deben
estar entrecomillados para evitar su interpretación por el shell. La barra de cierre puede ir seguida
de estos modificadores:
b la expresión regular es una expresión regular básica.
i ignora la distinción entre mayúsculas y minúsculas de las letras.
x la expresión regular es una expresión regular extendida
(por defecto).
Consulte las preguntas frecuentes de lsof (la sección de preguntas frecuentes indica su ubicación) para obtener más información sobre las expresiones regulares básicas
y extendidas.
La especificación de comando simple se prueba primero. Si esta prueba falla, se aplica la expresión regular del comando. Si la prueba de comando simple tiene éxito, no se realiza la prueba de expresión regular del comando. Esto puede dar como resultado mensajes como \`\`no se encontró ningún comando para la expresión regular:'' cuando se especifica la opción -V de lsof.
+c w define el número máximo de caracteres iniciales del nombre, proporcionado por el dialecto UNIX, del comando UNIX asociado con un proceso que se va a imprimir en la columna COMMAND. (El valor predeterminado de lsof es nueve).
Tenga en cuenta que muchos dialectos UNIX no proporcionan todos los caracteres del nombre del comando a lsof en
los archivos y estructuras de los que lsof obtiene el nombre del comando. A menudo, los dialectos limitan el
número de caracteres proporcionados en esas fuentes. Por ejemplo, Linux 2.4.27 y Solaris 9
ambos limitan la longitud del nombre del comando a 16 caracteres.
Si w es cero ('0'), se imprimirán todos los caracteres del comando proporcionados a lsof por el dialecto UNIX.
Si w es menor que la longitud del título de la columna, \`\`COMMAND'', se aumentará a esa longitud.
-C deshabilita la notificación de cualquier componente de la ruta del nombre desde la caché de nombres del kernel. Consulte
la sección KERNEL NAME CACHE para obtener más información.
+d s provoca que lsof busque todas las instancias abiertas del directorio s y los archivos y directorios que contiene en su nivel superior. +d NO recorre el árbol de directorios, con raíz en s.
Se puede utilizar la opción +D D para solicitar una búsqueda completa del árbol de directorios, con raíz en
el directorio D.
El procesamiento de la opción +d no sigue los enlaces simbólicos dentro de s a menos que también se especifique la opción -x o -x l. Tampoco busca archivos abiertos en puntos de montaje del sistema de archivos en subdirectorios de s a menos que también se especifique la opción -x o -x f.
Tenga en cuenta: la autoridad del usuario de esta opción limita la búsqueda a archivos que el usuario tiene permiso para examinar con la función [stat]({filename}../../stat)(2) del sistema.
-d s especifica una lista de descriptores de archivo (FD) para excluir o incluir en la salida. Los descriptores de archivo se especifican en el conjunto separado por comas s, por ejemplo, ``cwd,1,3'', ``^6,^2''. (No debe haber espacios en el conjunto).
La lista es una lista de exclusión si todas las entradas del conjunto comienzan con `^\'. Es una lista de inclusión si ninguna entrada comienza con `^\'. Las listas mixtas no están permitidas.
Un rango de números de descriptores de archivo puede estar en el conjunto siempre que ninguno de los miembros esté vacío, ambos miembros sean números y el miembro final sea mayor que el inicial, por ejemplo, ``0-7'' o ``3-10''. Los rangos se pueden especificar para la exclusión si tienen el prefijo \`^\', por ejemplo, ``^0-7'' excluye todos los descriptores de archivo del 0 al 7.
Los números de descriptores de archivo múltiples se unen en un solo conjunto OR antes de participar en la selección de la opción AND.
Cuando hay miembros de exclusión e inclusión en el conjunto, lsof los informa como errores y sale con un código de retorno distinto de cero.
Vea la descripción de los valores de salida del Descriptor de archivo (FD) en la sección SALIDA para obtener más información sobre los nombres de los descriptores de archivo.
fd es un nombre de descriptor de archivo pseudo para especificar todo el rango de números de descriptores de archivo posibles. fd no aparece en la columna FD de la salida.
+D D hace que lsof busque todas las instancias abiertas del directorio D y todos los archivos y directorios que contiene en su profundidad completa.
El procesamiento de la opción +D no sigue los enlaces simbólicos dentro de D a menos que también se especifique la opción -x o -x l. Tampoco busca archivos abiertos en puntos de montaje del sistema de archivos en subdirectorios de D a menos que también se especifique la opción -x o -x f.
Tenga en cuenta: la autoridad del usuario de esta opción limita la búsqueda a archivos que el usuario tiene permiso para examinar con la función [stat]({filename}../../stat)(2) del sistema.
Tenga en cuenta además: lsof puede procesar esta opción lentamente y requerir una gran cantidad de memoria dinámica para hacerlo. Esto se debe a que debe recorrer todo el árbol de directorios, con raíz en D, llamando a stat(2) para cada archivo y directorio, creando una lista de todos los archivos que encuentra y buscando en esa lista una coincidencia con cada archivo abierto. Cuando el directorio D es grande, estos pasos pueden tardar mucho tiempo, por lo que utilice esta opción con prudencia.
-D D dirige el uso del archivo de caché de dispositivos de lsof. El uso de esta opción a veces está restringido. Consulte la sección ARCHIVO DE CACHÉ DE DISPOSITIVOS y las secciones siguientes para obtener más información sobre esta opción.
-D debe ser seguido por una letra de función; la letra de función puede ir seguida opcionalmente por un nombre de ruta. Lsof reconoce las siguientes letras de función:
? - informa las rutas de archivo de caché de dispositivos
b - construye el archivo de caché de dispositivos
i - ignora el archivo de caché de dispositivos
r - lee el archivo de caché de dispositivos
u - lee y actualiza el archivo de caché de dispositivos
Las funciones b, r y u, acompañadas de un nombre de ruta, a veces están restringidas. Cuando estas funciones están restringidas, no aparecerán en la descripción de la opción -D que acompaña a la salida de la opción -h o -?. Consulte la sección ARCHIVO DE CACHÉ DE DISPOSITIVOS y las secciones siguientes para obtener más información sobre estas funciones y cuándo están restringidas.
La función ? informa las rutas de solo lectura y escritura que lsof puede usar para el archivo de caché de dispositivos, los nombres de cualquier variable de entorno cuyos valores lsof examinará al formar la ruta del archivo de caché de dispositivos y el formato para la ruta del archivo de caché de dispositivos personal. (Escape el carácter '?' según lo requiera su shell).
Cuando estén disponibles, las funciones b, r y u pueden ir seguidas de la ruta del archivo de caché de dispositivos. El valor predeterminado estándar es .lsof_hostname en el directorio de inicio del ID de usuario real que ejecuta lsof, pero esto podría haber cambiado cuando se configuró y compiló lsof. (La salida de las opciones -h y -? muestra el prefijo predeterminado actual, por ejemplo, ``.lsof''.). El sufijo, hostname, es el primer componente del nombre del host devuelto por gethostname(2).
Cuando esté disponible, la función b indica a lsof que cree un nuevo archivo de caché de dispositivos en la ruta predeterminada o especificada.
La función i indica a lsof que ignore el archivo de caché de dispositivos predeterminado y obtenga su información sobre los dispositivos mediante llamadas directas al kernel.
La función r indica a lsof que lea el archivo de caché de dispositivos en la ruta predeterminada o especificada, pero evita que cree un nuevo archivo de caché de dispositivos cuando no existe o el existente tiene una estructura incorrecta. La función r, cuando se especifica sin un nombre de ruta, evita que lsof actualice un archivo de caché de dispositivos incorrecto o desactualizado, o que cree uno nuevo en su lugar. La función r siempre está disponible cuando se especifica sin un argumento de nombre de ruta; puede estar restringida por los permisos del proceso lsof.
Cuando esté disponible, la función u indica a lsof que lea el archivo de caché de dispositivos en la ruta predeterminada o especificada, si es posible, y que lo reconstruya, si es necesario. Esta es la función predeterminada del archivo de caché de dispositivos cuando no se ha especificado ninguna opción -D.
+|-e s exime al sistema de archivos cuyo nombre de ruta es s de estar sujeto a llamadas a funciones del kernel que podrían bloquearse. La opción +e exime las llamadas a funciones del kernel [stat]({filename}../../stat)(2), lstat(2) y la mayoría de las llamadas a [readlink]({filename}../../readlink)(2). La opción -e exime solo las llamadas a funciones del kernel [stat]({filename}../../stat)(2) y lstat(2). Se pueden especificar varios sistemas de archivos con especificaciones +|-e separadas y cada uno puede tener llamadas a [readlink]({filename}../../readlink)(2) exentas o no.
Esta opción se implementa actualmente solo para Linux.
PRECAUCIÓN: esta opción se puede aplicar fácilmente a otros sistemas de archivos distintos del deseado, ya que utiliza el nombre de la ruta en lugar de los números de dispositivo e inodo, que son más fiables.
(Los números de dispositivo e inodo se obtienen mediante la llamada al kernel stat(2), que puede bloquear y, por lo tanto, no están disponibles; sin embargo, consulte la opción +|-m m como una posible alternativa para proporcionar los números de dispositivo). Utilice esta opción con mucho cuidado y especifique completamente el nombre de la ruta del sistema de archivos que se va a eximir.
Cuando se informan los archivos abiertos en los sistemas de archivos exentos, es posible que no se pueda obtener toda su información. Por lo tanto, algunas columnas de información estarán en blanco, los caracteres "DESCON" precederán los valores en la columna TIPO y la opción de exención aplicable se agregará entre paréntesis al final de la columna NOMBRE. (Es posible que cierta información sobre el número de dispositivo esté disponible a través de la opción +|-m m).
+|-E +E especifica que los pipes de Linux, los sockets UNIX de Linux, los sockets INET(6) de Linux cerrados en un host local, los archivos de pseudoterminal de Linux, la implementación de colas de mensajes POSIX en Linux y los eventfd de Linux deben mostrarse con información del punto final y también se deben mostrar los archivos de los puntos finales.
Nota 1: La información del punto final del archivo de socket UNIX solo está disponible cuando la línea de características habilitadas de la salida -v contiene uxsockept, y la información del punto final de pseudoterminal solo está disponible cuando la línea de características habilitadas contiene ptyept.
Nota 2: La información del archivo de la cola de mensajes POSIX solo está disponible cuando el sistema de archivos de cola de mensajes está montado.
La información del punto final del pipe se muestra en la columna NOMBRE en el formato "PID,cmd,FDmode", donde PID es el ID del proceso del punto final; cmd es el comando del proceso del punto final; FD es el descriptor del archivo del punto final; y mode es el modo de acceso del archivo del punto final.
La información del punto final de pseudoterminal se muestra en la columna NOMBRE como "->/dev/ptsmin PID,cmd,FDmode" o "PID,cmd,FDmode". La primera forma es para un dispositivo maestro; la segunda, para un dispositivo esclavo. min es el número de dispositivo menor de un dispositivo esclavo; y PID, cmd, FD y mode son los mismos que con la información del punto final del pipe. Nota: La información del punto final de pseudoterminal solo está disponible cuando la línea de características habilitadas de la salida -v contiene ptyept. Además, esta función funciona en los kernels de Linux superiores a 4.13.0.
La información del archivo de socket UNIX se muestra en la columna NOMBRE en el formato "type=TYPE ->INO=INODE PID,cmd,FDmode", donde TYPE es el tipo de socket; INODE es el número de inodo del socket conectado; y PID, cmd, FD y mode son los mismos que con la información del punto final del pipe. Nota: La información del archivo de socket UNIX solo está disponible cuando la línea de características habilitadas de la salida -v contiene uxsockept.
La información del punto final del socket INET se inserta en el valor de la columna NAME en el formato `` -> PID,cmd,FDmode'', donde PID, cmd, FD y mode son los mismos que con la información del punto final de la tubería. La información del punto final solo está disponible si el socket se utiliza para la comunicación entre procesos locales (IPC); ambos puntos finales se enlazan a la misma dirección IPv4 o IPv6 local.
La información del punto final de la cola de mensajes POSIX se muestra en la columna NAME en el mismo formato que la de la tubería.
La información del punto final eventfd se muestra en la columna NAME en el mismo formato que la de la tubería. Esta función funciona en los kernels de Linux con versiones superiores a 5.2.0.
Pueden aparecer múltiples instancias de esta información en la columna NAME de un archivo.
-E especifica que se deben mostrar los archivos con puntos finales admitidos con la información del punto final, pero no los archivos de los puntos finales.
+|-f [cfgGn]
f por sí solo aclara cómo se deben interpretar los argumentos de nombre de ruta. Cuando se le sigue con c, f, g, G o n en cualquier combinación, especifica que se debe habilitar (+) o inhibir (-) el listado de la información de la estructura de archivo del kernel.
Normalmente, se considera que un argumento de nombre de ruta es un nombre de sistema de archivos si coincide con un nombre de directorio montado informado por mount(8), o si representa un dispositivo de bloque, nombrado en la salida de montaje y asociado con un nombre de directorio montado. Cuando se especifica +f, todos los argumentos de nombre de ruta se considerarán nombres de sistema de archivos y lsof se quejará si alguno no lo es. Esto puede ser útil, por ejemplo, cuando el nombre del sistema de archivos (dispositivo montado) no es un dispositivo de bloque. Esto ocurre con algunos sistemas de archivos CD-ROM.
Cuando se especifica -f por sí solo, todos los argumentos de nombre de ruta se considerarán archivos simples. Por lo tanto, por ejemplo, los argumentos `-f -- /'' dirigen a lsof para que busque archivos abiertos con una ruta/, no todos los archivos abiertos en el sistema de archivos/` (raíz).
Tenga cuidado de asegurarse de que +f y -f estén terminados correctamente y no sean seguidos por un carácter (por ejemplo, del nombre del archivo o del sistema de archivos) que pueda tomarse como un parámetro. Por ejemplo, utilice ``--'' después de +f y -f como en estos ejemplos.
$ lsof +f -- /file/system/name
$ lsof -f -- /file/name
El listado de la información de las estructuras de archivo del kernel, solicitado con la opción +f [cfgGn], normalmente está inhibido, y no está disponible en su totalidad o en parte para algunos dialectos (por ejemplo, los kernels de Linux basados en /proc con versiones inferiores a 2.6.22). Cuando el prefijo de f es un signo más (+), estos caracteres solicitan información de la estructura de archivo:
c recuento de usos de la estructura de archivo (no Linux)
f dirección de la estructura de archivo (no Linux)
g abreviaturas de la marca de archivo (Linux 2.6.22 y posteriores)
Abreviatura. Marca en el código C (consulte open(2))
W O_WRONLY
RW O_RDWR
CR O_CREAT
EXCL O_EXCL
NTTY O_NOCTTY
TR O_TRUNC
AP O_APPEND
ND O_NDELAY
SYN O_SYNC
ASYN O_ASYNC
DIR O_DIRECT
DTY O_DIRECTORY
NFLK O_NOFOLLOW
NATM O_NOATIME
DSYN O_DSYNC
RSYN O_RSYNC
LG O_LARGEFILE
CX O_CLOEXEC
TMPF O_TMPFILE
G indicador de archivo en hexadecimal (Linux 2.6.22 y superior)
n dirección del nodo de estructura de archivo (no Linux)
Cuando el prefijo es un guion (-), los mismos caracteres desactivan la lista de los valores indicados.
Las direcciones de estructura de archivo, los recuentos de uso, los indicadores y las direcciones de nodo se pueden usar para detectar más fácilmente los archivos idénticos heredados por los procesos secundarios y los archivos idénticos utilizados por diferentes procesos. La salida de columna de lsof se puede ordenar por las columnas de salida que contienen los valores y listar para identificar el uso de archivos idénticos, o la salida de campo de lsof se puede analizar mediante un script posterior de AWK o Perl, o mediante un programa C.
-F f especifica una lista de caracteres, f, que selecciona los campos que se van a mostrar para el procesamiento por otro programa, y el carácter que termina cada campo de salida. Cada campo que se va a mostrar se especifica con un solo carácter en f. El terminador de campo predeterminado es NL, pero se puede cambiar a NUL (000). Consulte la sección SALIDA PARA OTROS PROGRAMAS para obtener una descripción de los caracteres de identificación de campo y el proceso de salida de campo.
Cuando la lista de selección de caracteres de campo está vacía, se seleccionan todos los campos estándar (excepto el campo de dispositivo sin formato, el campo de contexto de seguridad y el campo de zona por razones de compatibilidad) y se utiliza el terminador de campo NL.
Cuando la lista de selección de caracteres de campo contiene solo un cero (0), se seleccionan todos los campos (excepto el campo de dispositivo sin formato por razones de compatibilidad) y se utiliza el carácter terminador NUL.
Otras combinaciones de campos y su carácter terminador de campo asociado deben establecerse con entradas explícitas en f, como se describe en la sección SALIDA PARA OTROS PROGRAMAS.
Cuando un carácter de selección de campo identifica un elemento que lsof no muestra normalmente (por ejemplo, PPID, seleccionado con -R - especificación del carácter de campo; por ejemplo, -FR), también se selecciona la lista del elemento.
Cuando la lista de selección de caracteres de campo contiene el carácter único ?, lsof mostrará una lista de ayuda de los caracteres de identificación de campo. (Escape el carácter ? según lo requiera su shell).
-g [s] excluye o selecciona la lista de archivos para los procesos cuyos números de identificación de grupo de procesos (PGID) opcionales están en el conjunto separado por comas s; por ejemplo, `123` o `123,^456`. (No debe haber espacios en el conjunto).
Los números de PGID que comienzan con ^ (negación) representan exclusiones.
Múltiples números de PGID se unen en un solo conjunto OR antes de participar en la selección de opciones AND. Sin embargo, las exclusiones de PGID se aplican sin OR ni AND y tienen efecto antes de que se apliquen otros criterios de selección.
La opción -g también habilita la visualización de salida de los números de PGID. Cuando se especifica sin un conjunto de PGID, eso es todo lo que hace.
-H dirige a lsof a imprimir tamaños legibles por humanos, por ejemplo, 123.4K 456.7M.
-i [i] selecciona la lista de archivos cuyos archivos de dirección de Internet coincidan con la dirección especificada en i. Si no se especifica ninguna dirección, esta opción selecciona la lista de todos los archivos de red de Internet y 25 (HP-UX).
Si se especifica -i4 o -i6 sin una dirección siguiente, solo se muestran los archivos de la versión IP indicada, IPv4 o IPv6. (Se puede usar una especificación IPv6 solo si el dialecto lo admite, como se indica mediante [46] y IPv[46] en la salida de lsof con las opciones -h o -?). Especificar secuencialmente -i4, seguido de -i6 es lo mismo que especificar -i, y viceversa. Especificar -i4 o -i6 después de -i es lo mismo que especificar -i4 o -i6 por sí solo.
Se pueden especificar múltiples direcciones (hasta un límite de 100) con múltiples opciones -i. Se combinan en un único conjunto OR antes de participar en la selección de opciones AND.
Una dirección de Internet se especifica en el formato (los elementos entre corchetes son opcionales):
[46][protocol][@hostname|hostaddr][:service|port]
donde:
46especifica la versión IP, IPv4 o IPv6,
que se aplica a la siguiente dirección.
'6' solo se puede especificar si el dialecto UNIX admite IPv6. Si no se especifica ni '4' ni
'6', la siguiente dirección se aplica a todas las versiones de IP.
protocol es un nombre de protocolo: TCP, UDP o UDPLITE.
hostname es un nombre de host de Internet. A menos que se especifique una versión de IP
específica, los archivos de red abiertos asociados con nombres de host de todas las versiones
se seleccionarán.
hostaddr es una dirección IPv4 numérica en formato de puntos; o una dirección IPv6 numérica en
formato de dos puntos, encerrada entre corchetes, si el dialecto UNIX admite IPv6. Cuando se
selecciona una versión de IP, solo se pueden especificar sus direcciones numéricas.
service es un nombre de `/etc/services`, por ejemplo, smtp o una lista de ellos.
port es un número de puerto o una lista de ellos.
Las opciones IPv6 solo se pueden usar si el dialecto UNIX admite IPv6. Para ver si el dialecto
admite IPv6, ejecute `lsof` y especifique la opción `-h` o `-?` (ayuda). Si la descripción mostrada de la opción `-i` contiene `[46]` y `IPv[46]`, IPv6 es compatible.
No se pueden especificar nombres de host y direcciones IPv4 si la selección de archivos de red
se limita a IPv6 con `-i 6`. No se pueden especificar nombres de host y direcciones IPv6 si
la selección de archivos de red se limita a IPv4 con `-i 4`. Cuando la dirección de un archivo de red IPv4 abierto se asigna en una dirección IPv6, el tipo del archivo abierto será IPv6, no IPv4, y su visualización se seleccionará con '6', no con '4'.
Debe proporcionarse al menos un componente de dirección: 4, 6, protocolo, nombre de host,
dirección de host o servicio. El carácter '@', que encabeza la especificación del host, siempre es obligatorio; al igual que los dos puntos ':', que encabezan la especificación del puerto. Especifique ya sea el nombre de host o la dirección de host. Especifique ya sea una lista de nombres de servicio o una lista de números de puerto. Si se especifica una lista de nombres de servicio, también es posible que deba especificar el protocolo si los números de puerto TCP, UDP y UDPLITE para el nombre del servicio son diferentes. Use cualquier caso, ya sea minúsculas o mayúsculas, para el protocolo.
Los nombres de los servicios y los números de puerto pueden combinarse en una lista cuyas entradas están separadas por comas y cuyas entradas de rango numérico están separadas por signos menos. No debe haber espacios incrustados y todos los nombres de los servicios deben pertenecer al protocolo especificado. Dado que los nombres de los servicios pueden contener signos menos incrustados, la entrada inicial de un rango no puede ser un nombre de servicio; puede ser un número de puerto, sin embargo.
Aquí hay algunos ejemplos de direcciones:
-i6 - solo IPv6
TCP:25 - TCP y puerto 25
@1.2.3.4 - dirección de host IPv4 en Internet 1.2.3.4
@[3ffe:1ebc::1]:1234 - dirección de host IPv6 en Internet
3fe:1ebc::1, puerto 1234
UDP:who - servicio UDP who en el puerto
_:513 - TCP, puerto 513 y nombre de host lsof.itap
tcp@foo:1-10,smtp,99 - TCP, puertos del 1 al 10,
nombre de servicio smtp, puerto 99, nombre de host foo
tcp@bar:1-smtp - TCP, puertos del 1 al smtp, host bar
:time - ya sea TCP, UDP o UDPLITE, servicio time en el puerto
-K k selecciona el listado de tareas (hilos) de los procesos, en los dialectos donde se admite la información de tareas (hilos). (Si la salida de ayuda, es decir, la salida de las opciones -h o -?, muestra esta opción, entonces la información de tareas (hilos) es compatible con el dialecto).
Si a -K le sigue un valor, k, debe ser ``i''. Eso hace que lsof ignore las tareas, particularmente en el caso predeterminado de listar todo cuando no se especifican otras opciones.
Cuando se especifican -K y -a en Linux, y las tareas de un proceso principal son seleccionadas por otras opciones, el proceso principal también se incluirá como si fuera una tarea, pero sin un ID de tarea. (Consulte la descripción de la columna TID en la sección SALIDA).
Donde la versión de FreeBSD admite hilos, todos los hilos se enumerarán con sus ID.
En general, los hilos y las tareas heredan los archivos del llamador, pero pueden cerrar algunos y abrir otros, por lo que lsof siempre informa sobre todos los archivos abiertos de los hilos y las tareas.
-k k especifica un archivo de lista de nombres de kernel, k, en lugar de /vmunix, /mach, etc. -k no está disponible en AIX en IBM RISC/System 6000.
-l inhibe la conversión de los números de ID de usuario a nombres de inicio de sesión. También es útil cuando la búsqueda de nombres de inicio de sesión no funciona correctamente o es lenta.
+|-L [l] habilita (`+') o deshabilita (`-') el listado de los recuentos de enlaces de archivos, donde están disponibles; por ejemplo, no están disponibles para sockets o la mayoría de los FIFOs y las tuberías.
Cuando se especifica +L sin un número siguiente, se mostrarán todos los recuentos de enlaces. Cuando se especifica -L (el valor predeterminado), no se mostrarán los recuentos de enlaces.
Cuando +L va seguido de un número, solo se mostrarán los archivos que tengan un recuento de enlaces menor que ese número. (No se puede agregar un número después de -L). Una especificación del formulario +L1''
seleccionará los archivos abiertos que se han eliminado. Una especificación del formulario+aL1
Para otras comparaciones de recuento de enlaces, utilice la salida de campo (-F) y un script o programa de postprocesamiento.
+|-m m especifica un archivo de memoria de kernel alternativo o activa el procesamiento del complemento de la tabla de montaje.
La opción -m m especifica un archivo de memoria del kernel, m, en lugar de /dev/kmem o /dev/mem; por ejemplo, un archivo de volcado de memoria.
La opción +m solicita que se escriba un archivo suplementario de montaje en el archivo de salida estándar. Todas las demás opciones se ignoran silenciosamente.
Habrá una línea en el archivo suplementario de montaje para cada sistema de archivos montado, que contendrá el directorio del sistema de archivos montado, seguido de un solo espacio, seguido del número de dispositivo en formato hexadecimal "0x"; por ejemplo:
/ 0x801
Lsof puede usar el archivo suplementario de montaje para obtener los números de dispositivo de los sistemas de archivos cuando no puede obtenerlos a través de stat(2) o lstat(2).
La opción +m m identifica m como un archivo suplementario de montaje.
Nota: las opciones +m y +m m no están disponibles para todos los dialectos compatibles. Consulte la salida de las opciones -h o -? de lsof para ver si las opciones +m y +m m están disponibles.
+|-M Habilita (+) o deshabilita (-) la generación de informes de los registros de portmapper para los puertos TCP, UDP y UDPLITE locales, donde el mapeo de puertos es compatible. (Consulte el último párrafo de esta descripción de opción para obtener información sobre dónde se admite la generación de informes de registro de portmapper).
El modo de generación de informes predeterminado está configurado por el compilador de lsof con la macro HASPMAPENABLED en el archivo de encabezado machine.h del dialecto; lsof se distribuye con la macro HASPMAPENABLED desactivada, por lo que la generación de informes de portmapper está desactivada de forma predeterminada y debe solicitarse con +M. Especificar la opción -h o -? de lsof informará sobre el modo predeterminado. Deshabilitar el registro de portmapper cuando ya está deshabilitado o habilitarlo cuando ya está habilitado es aceptable. Cuando se habilita la generación de informes de registro de portmapper, lsof muestra el registro de portmapper (si existe) para los puertos TCP, UDP o UDPLITE locales entre corchetes inmediatamente después de los números de puerto o los nombres de servicio; por ejemplo, ":1234[nombre]" o ":nombre[100083]". La información del registro puede ser un nombre o un número, según lo que el programa que se registra haya proporcionado al portmapper cuando registró el puerto.
Cuando se habilita la generación de informes de registro de portmapper, lsof puede ejecutarse un poco más lentamente o incluso bloquearse cuando el acceso al portmapper se congestiona o se detiene. Invierta el modo de generación de informes para determinar si la generación de informes de registro de portmapper está ralentizando o bloqueando lsof.
Para fines de generación de informes de registro de portmapper, lsof considera que un puerto TCP, UDP o UDPLITE es local si: se encuentra en la parte local de su estructura de kernel correspondiente; o si se encuentra en la parte extranjera de su estructura de kernel correspondiente y las direcciones de Internet locales y extranjeras son las mismas; o si se encuentra en la parte extranjera de su estructura de kernel correspondiente y la dirección de Internet extranjera es INADDR_LOOPBACK (127.0.0.1). Esta regla puede hacer que lsof ignore algunos puertos extranjeros en las máquinas con múltiples interfaces cuando la dirección de Internet extranjera está en una interfaz diferente de la local.
Consulte la sección de preguntas frecuentes de lsof (La sección de preguntas frecuentes indica su ubicación) para obtener más información sobre los problemas relacionados con el registro del administrador de puertos.
El registro del administrador de puertos solo es compatible con las variantes que tienen archivos de encabezado RPC. (Algunas distribuciones de Linux con GlibC 2.14 no los tienen). Cuando se admite el registro del administrador de puertos, la salida de ayuda de -h o -? mostrará la opción +|-M.
-n impide la conversión de los números de red a nombres de host para los archivos de red. Impedir la conversión puede hacer que lsof se ejecute más rápido. También es útil cuando la búsqueda del nombre de host no funciona correctamente.
-N selecciona la lista de archivos NFS.
-o indica a lsof que muestre el desplazamiento del archivo en todo momento. Esto hace que el título de la columna de salida SIZE/OFF cambie a OFFSET. Nota: en algunos sistemas operativos UNIX, lsof no puede obtener información precisa o coherente del desplazamiento del archivo de sus fuentes de datos del kernel, a veces solo para tipos específicos de archivos (por ejemplo, archivos de socket). Consulte la sección de preguntas frecuentes de lsof (La sección de preguntas frecuentes indica su ubicación) para obtener más información.
Las opciones -o y -s son mutuamente excluyentes; no se pueden especificar ambas. Cuando no se especifica ninguna, lsof muestra el valor apropiado y disponible (ya sea tamaño u offset) para el tipo de archivo.
-o o define el número de dígitos decimales (o) que se imprimirán después de "0t" para un desplazamiento de archivo antes de que el formato cambie a "0x...". Un valor de o igual a cero (ilimitado) indica a lsof que utilice el formato "0t" para toda la salida de desplazamiento.
Esta opción NO indica a lsof que muestre el desplazamiento en todo momento; especifique -o (sin un número final) para hacerlo. -o o solo especifica el número de dígitos después de "0t" en la salida de tamaño y desplazamiento mixtos o solo de desplazamiento. Por lo tanto, por ejemplo, para indicar a lsof que muestre el desplazamiento en todo momento con un recuento de dígitos decimales de 10, utilice:
-o -o 10
o
-oo10
El número predeterminado de dígitos permitidos después de "0t" es normalmente 8, pero puede haber sido cambiado por el compilador de lsof. Consulte la descripción de la opción -o o en la salida de la opción -h o -? para determinar el valor predeterminado que está en efecto.
-O indica a lsof que omita la estrategia que utiliza para evitar que se bloquee con algunas operaciones del kernel, es decir, realizándolas en procesos secundarios bifurcados. Consulte las secciones BLOQUEOS Y TIEMPOS DE ESPERA y EVITAR LOS BLOQUEOS DEL KERNEL para obtener más información sobre las operaciones del kernel que pueden bloquear lsof.
Si bien el uso de esta opción reducirá la sobrecarga de inicio de lsof, también puede hacer que lsof se bloquee cuando el kernel no responde a una función. Utilice esta opción con precaución.
-p s excluye o selecciona la lista de archivos para los procesos cuyos números de identificación de proceso (PID) opcionales están en el conjunto separado por comas s, por ejemplo, "123" o "123,^456". (No debe haber espacios en el conjunto).
Los números de PID que comienzan con `^' (negación) representan exclusiones.
Múltiples números de ID de proceso se unen en un único conjunto OR antes de participar en la selección con la opción AND. Sin embargo, las exclusiones de PID se aplican sin OR o AND y tienen efecto antes de que se apliquen otros criterios de selección.
-P impide la conversión de números de puerto a nombres de puerto para archivos de red (el mapeo se aprende comúnmente de /etc/services). Inhibir la conversión puede hacer que lsof se ejecute un poco más rápido. También es útil cuando la búsqueda del nombre del puerto no funciona correctamente.
-Q ignora los términos de búsqueda fallidos. Cuando se le indica a lsof que busque usuarios de un archivo, o usuarios de un dispositivo, o un PID específico, o ciertos protocolos utilizados por ese PID, lsof devolverá un error si alguno de los resultados de la búsqueda está vacío. La opción -Q cambiará este comportamiento para que lsof, en su lugar, devuelva un código de salida exitoso (0) incluso si alguno de los resultados de la búsqueda está vacío. Además, los términos de búsqueda faltantes no se informarán a stderr.
+|-r [t[c<N>][m<fmt>]]
pone a lsof en modo de repetición. Allí, lsof enumera los archivos abiertos según lo seleccionado por otras opciones, se retrasa t segundos (el valor predeterminado es quince), luego repite la lista, retrasándose y listando repetidamente hasta que se detiene por una condición definida por el prefijo de la opción.
Si el prefijo es un \`-\', el modo de repetición es infinito. Lsof debe terminarse con una señal de interrupción o de salida. \`c<N>' es para especificar los límites de la repetición; si el número de iteraciones llega a `<N>', Lsof se detiene.
Si el prefijo es `+\', el modo de repetición finalizará en el primer ciclo si no se enumeran archivos abiertos y, por supuesto, cuando lsof se detiene con una señal de interrupción o de salida. Cuando el modo de repetición termina porque no se enumeran archivos, el código de salida del proceso será cero si alguna vez se enumeraron archivos abiertos; uno, si nunca se enumeraron archivos.
Lsof marca el final de cada lista: si la salida de campo está en curso (se ha especificado la opción -F), el marcador predeterminado es `m'; de lo contrario, el marcador predeterminado es ``========''. El marcador va seguido de un carácter NL.
El argumento opcional "m<fmt>" especifica un formato para la línea del marcador. Los caracteres <fmt> que siguen a \`m' se interpretan como una especificación de formato para la función strftime(3), cuando esta y la función localtime(3) están disponibles en el dialecto de la biblioteca C. Consulte la documentación de strftime(3) para ver lo que puede aparecer en su especificación de formato. Tenga en cuenta que cuando se solicita la salida de campo con la opción -F, <fmt> no puede contener el formato NL, \`\%n''. Tenga en cuenta también que cuando <fmt> contiene espacios u otros caracteres que afectan la interpretación de los argumentos del shell, <fmt> debe estar entre comillas de manera adecuada.
El modo de repetición reduce la sobrecarga de inicio de lsof, por lo que es más eficiente usar este modo que llamar a lsof repetidamente desde un script de shell, por ejemplo.
Para usar el modo de repetición de la manera más eficiente, acompañe +|-r con la especificación de otras opciones de selección de lsof, de modo que la cantidad de acceso a la memoria del kernel que realiza lsof se mantenga al mínimo. Las opciones que filtran a nivel de proceso (por ejemplo, -c, -g, -p, -u) son los selectores más eficientes.
El modo de repetición es útil cuando se combina con la salida de campos (vea la descripción de la opción -F) y un script awk o Perl supervisor, o un programa C.
-R dirige a lsof para que liste el número de identificación del proceso padre en la columna PPID.
-s [p:s] s por sí sola, dirige a lsof para que muestre el tamaño del archivo en todo momento. Esto hace que el título de la columna de salida SIZE/OFF se cambie a SIZE. Si el archivo no tiene un tamaño, no se muestra nada.
La forma opcional -s p:s solo está disponible para dialectos seleccionados, y solo cuando la salida de ayuda -h o -? la enumera.
Cuando la forma opcional está disponible, la s puede ir seguida de un nombre de protocolo (p), ya sea TCP o UDP, dos puntos (:), y una lista separada por comas de nombres de estado de protocolo. La opción hace que los archivos TCP y UDP abiertos se excluyan si sus nombres de estado están en la lista (s) precedidos por un ^; o se incluyan si sus nombres no están precedidos por un ^.
Los dialectos que admiten esta opción pueden admitir solo un protocolo. Cuando se especifica un protocolo no admitido, se mostrará un mensaje que indique que los nombres de estado para el protocolo no están disponibles.
Cuando se define una lista de inclusión, solo los archivos de red con nombres de estado en la lista estarán presentes en la salida de lsof. Por lo tanto, especificar un solo nombre de estado significa que solo se enumerarán los archivos de red con ese único nombre de estado.
No importa la distinción entre mayúsculas y minúsculas en los nombres de protocolo o estado, pero no puede haber espacios y los dos puntos (:) que separan el nombre del protocolo (p) y la lista de nombres de estado (s) son obligatorios.
Si solo se deben listar los archivos TCP y UDP, según las exclusiones e inclusiones especificadas, también se debe especificar la opción -i. Si solo se deben listar los archivos de un solo protocolo, agregue su nombre como argumento a la opción -i.
Por ejemplo, para listar solo archivos de red con el estado TCP LISTEN, use:
-iTCP -sTCP:LISTEN
O, por ejemplo, para listar archivos de red con todos los estados UDP excepto Idle, use:
-iUDP -sUDP:^Idle
Los nombres de estado varían según los dialectos UNIX, por lo que no es posible proporcionar una lista completa. Algunos nombres de estado TCP comunes son: CLOSED, IDLE, BOUND, LISTEN, ESTABLISHED, SYN_SENT, SYN_RCDV, ESTABLISHED, CLOSE_WAIT, FIN_WAIT1, CLOSING, LAST_ACK, FIN_WAIT_2 y TIME_WAIT. Dos nombres de estado UDP comunes son Unbound e Idle.
Consulte las preguntas frecuentes de lsof (la sección de preguntas frecuentes indica su ubicación) para obtener más información sobre cómo usar la exclusión e inclusión de estados de protocolo, incluidos ejemplos.
La opción -o (sin un recuento decimal siguiente) y la opción -s (sin un protocolo y una lista de nombres de estado siguientes) son mutuamente excluyentes; no se pueden especificar ambas. Cuando ninguna de las dos se especifica, lsof muestra el valor apropiado y disponible para el tipo de archivo, ya sea tamaño u desplazamiento.
Dado que algunos tipos de archivos no tienen tamaños reales (sockets, FIFOs, pipes, etc.), lsof muestra para sus tamaños las cantidades de contenido en sus buffers de kernel asociados, si es posible.
`-S [t]` especifica un valor opcional de tiempo de espera en segundos para las funciones del kernel: `lstat(2)`, `[readlink]({filename}../../readlink)(2)` y `[stat]({filename}../../stat)(2)`, que de otro modo podrían bloquearse. El valor mínimo para `t` es dos; el valor predeterminado es quince; si no se especifica ningún valor, se utiliza el valor predeterminado.
Consulte la sección BLOQUEOS Y TIEMPOS DE ESPERA para obtener más información.
`-T [t]` controla la presentación de cierta información de TCP/TPI, también presentada por `[netstat]({filename}../../netstat)(1)`, después de las direcciones de red. En la salida normal, la información aparece entre paréntesis, cada elemento, excepto el nombre del estado TCP o TPI, se identifica mediante una palabra clave, seguida de `='`, y se separa de los demás mediante un solo espacio:
<Nombre del estado TCP o TPI>
QR=<longitud de la cola de lectura>
QS=<longitud de la cola de envío>
SO=<opciones y valores del socket>
SS=<estados del socket>
TF=<indicadores y valores de TCP>
WR=<longitud de la ventana de lectura>
WW=<longitud de la ventana de escritura>
No todos los valores se presentan para todos los dialectos UNIX. Los valores de los elementos (cuando estén disponibles) se presentan después del nombre del elemento y el =.
Cuando el modo de salida de campo está en vigor (consulte SALIDA PARA OTROS PROGRAMAS), cada elemento aparece como un campo con un carácter \T\'` inicial.
`-T` sin caracteres de palabra clave posteriores deshabilita la presentación de información de TCP/TPI.
`-T` con caracteres de palabra clave posteriores selecciona la presentación de información específica de TCP/TPI:
f selecciona la presentación de opciones de socket,
estados y valores, e indicadores y
valores de TCP.
q selecciona la presentación de la longitud de la cola.
s selecciona la presentación del estado de conexión.
w selecciona la presentación del tamaño de la ventana.
No todas las selecciones están habilitadas para algunos dialectos UNIX. El estado se puede seleccionar para todos los dialectos y se presenta de forma predeterminada. La salida de ayuda de -h o -? para la opción -T mostrará qué selecciones se pueden utilizar con el dialecto UNIX.
Cuando se utiliza -T para seleccionar información (es decir, se sigue con uno o más caracteres de selección), la presentación del estado se desactiva de forma predeterminada y debe seleccionarse explícitamente de nuevo en los caracteres que siguen a -T. (En efecto, entonces, el valor predeterminado es equivalente a -Ts). Por ejemplo, si se desea la longitud de la cola y el estado, utilice -Tqs.
Las opciones de socket, los estados de socket, algunos valores de socket, los indicadores de TCP y un valor de TCP se pueden presentar (cuando estén disponibles en el dialecto UNIX) en forma de los nombres que suelen aparecer después de SO_, so_, SS_, TCP_ y TF_ en los archivos de encabezado del dialecto, normalmente <sys/socket.h>, <sys/socketvar.h> y <netinet/tcp_var.h>. Consulte esos archivos de encabezado para conocer el significado de los indicadores, opciones, estados y valores.
`\`SO=\`\` precede a las opciones y valores del socket; `\`SS=\`, a los estados del socket; y `\`TF=\`, a los indicadores y valores de TCP.
Si un indicador u opción tiene un valor, el valor seguirá a un `=` y al nombre; por ejemplo, `\`SO=LINGER=5\`, `\`SO=QLIM=5\`, `\`TF=MSS=512\`. Se pueden presentar los siguientes siete valores:
Nombre Presentado Descripción (Símbolo común)
KEEPALIVE tiempo de mantener la conexión activa (SO_KEEPALIVE)
LINGER tiempo de espera (SO_LINGER)
MSS tamaño máximo del segmento (TCP_MAXSEG)
PQLEN conexiones parciales en la cola de escucha
QLEN conexiones establecidas en la cola de escucha
QLIM límite de la cola de escucha establecida
RCVBUF longitud del búfer de recepción (SO_RCVBUF)
SNDBUF longitud del búfer de envío (SO_SNDBUF)
Los detalles sobre qué opciones de socket y valores, estados de socket y banderas y valores TCP pueden mostrarse para dialectos UNIX específicos se pueden encontrar en la respuesta a las preguntas "¿Por qué lsof no informa sobre las opciones de socket, los estados de socket y las banderas y valores TCP para mi dialecto?" y "¿Por qué lsof no informa sobre el recuento de conexiones en la cola de escucha parcial para mi dialecto?" en las preguntas frecuentes de lsof (la sección de preguntas frecuentes indica su ubicación). En Linux, esta opción también imprime el estado de los sockets de dominio UNIX.
-t produce una salida concisa que incluye solo los identificadores de proceso (sin encabezado), para que sea fácil de usar de forma programática. por ejemplo:
# recarga cualquier cosa que use SSL antiguo
lsof -t /lib/*/libssl.so.* | xargs -r kill -HUP
# obtener una lista de procesos y luego iterar sobre ellos (solo Bash)
mapfile -t pids < <(
lsof -wt /var/log/your.log
)
for pid in "${pids[@]}" ; do
your_command -p "$pid"
done
La opción -t implica la opción -w.
-u s selecciona la lista de archivos para el usuario cuyo nombre de inicio de sesión o números de ID de usuario están en el conjunto separado por comas s, por ejemplo, ``abe'' o ``548,root''. (No debe haber espacios en el conjunto).
Se unen varios nombres de inicio de sesión o números de ID de usuario en un solo conjunto OR antes de participar en la selección de opciones AND.
Si a un nombre de inicio de sesión o ID de usuario le precede un `^', se convierte en una negación, es decir, los archivos de los procesos propiedad del nombre de inicio de sesión o ID de usuario nunca se incluirán en la lista. Una selección de nombre de inicio de sesión o ID de usuario negada no se AND ni se OR con otras selecciones; se aplica antes que todas las demás selecciones y excluye absolutamente la inclusión de los archivos del proceso. Por ejemplo, para dirigir a lsof para que excluya la inclusión de archivos pertenecientes a procesos root, especifique -u^root'' o-u^0''.
-U selecciona la lista de archivos de socket de dominio UNIX.
-v selecciona la lista de información de la versión de lsof, que incluye: número de revisión; cuándo se construyó el binario lsof; quién construyó el binario y dónde; el nombre del compilador utilizado para construir el binario lsof; el número de versión del compilador cuando esté disponible; y las marcas del compilador y del enlazador utilizadas para construir el binario lsof; y la información del sistema, normalmente la salida de la opción -a de uname.
-V indica a lsof que indique los elementos que se le pidió que buscara y que no pudo encontrar: nombres de comandos, nombres de archivos, direcciones o archivos de Internet, nombres de inicio de sesión, archivos NFS, PID, PGID y UID.
Cuando se AND otros opciones a las opciones de búsqueda, o las opciones de tiempo de compilación restringen la inclusión de algunos archivos, lsof puede no informar que no pudo encontrar un elemento de búsqueda cuando una opción AND o una opción de tiempo de compilación impide la inclusión del archivo abierto que contiene el elemento de búsqueda ubicado.
Por ejemplo, lsof -V -iTCP@foobar -a -d 999 puede que no informe de un fallo al localizar los archivos abiertos en TCP@foobar y puede que no liste ninguno, si no hay ninguno que tenga un número de descriptor de archivo de 99. Una situación similar ocurre cuando se definen HASSECURITY y HASNOSOCKSECURITY en tiempo de compilación y estos impiden la lista de archivos abiertos.
+|-w Habilita (+) o deshabilita (-) la supresión de los mensajes de advertencia.
El creador de lsof puede elegir tener los mensajes de advertencia deshabilitados o habilitados por defecto. El estado predeterminado del mensaje de advertencia se indica en la salida de la opción -h o -?. Deshabilitar los mensajes de advertencia cuando ya están deshabilitados o habilitarlos cuando ya están habilitados es aceptable.
La opción -t implica la opción -w.
-x [fl] puede acompañar a las opciones +d y +D para dirigir su procesamiento para que atraviese los enlaces simbólicos y/o los puntos de montaje del sistema de archivos que se encuentren al escanear el directorio (+d) o el árbol de directorios (+D).
Si -x se especifica por sí sola sin un parámetro siguiente, el procesamiento de cruce tanto de los enlaces simbólicos como de los puntos de montaje del sistema de archivos se habilita. Tenga en cuenta que cuando se especifica -x sin un parámetro, el siguiente argumento debe comenzar con '-' o '+'.
El parámetro opcional 'f' habilita el procesamiento de cruce de puntos de montaje del sistema de archivos; 'l', el procesamiento de cruce de enlaces simbólicos.
La opción -x no se puede proporcionar sin proporcionar también una opción +d o +D.
-X Esta es una opción específica del dialecto.
AIX: Esta opción de IBM AIX RISC/System 6000 solicita el informe de las referencias de archivos de texto ejecutables y las bibliotecas compartidas.
ADVERTENCIA: debido a que esta opción utiliza la función readx() del kernel, su uso en un sistema AIX ocupado podría hacer que un proceso de aplicación se bloquee por completo, de modo que no se pueda eliminar ni detener. Nunca he visto que esto suceda ni he recibido ningún informe de ello, pero creo que existe una remota posibilidad de que pueda suceder.
Por defecto, el uso de readx() está deshabilitado. En AIX 5L y versiones posteriores, lsof puede necesitar permiso setuid-root para realizar las acciones que esta opción solicita.
El creador de lsof puede especificar que la opción -X se restrinja a los procesos cuyo UID real es root. Si esto se ha hecho, la opción -X no aparecerá en la salida de ayuda de -h o -? a menos que el UID real del proceso lsof sea root. La distribución predeterminada de lsof permite que cualquier UID especifique -X, por lo que por defecto aparecerá en la salida de ayuda.
Cuando el uso de readx() de AIX está deshabilitado, lsof puede no ser capaz de informar de la información de todas las referencias de archivos de texto y cargadores, pero también puede evitar agravar un error del kernel de búsqueda de directorios de AIX, conocido como el error de ID de segmento obsoleto.
La función readx(), utilizada por lsof o cualquier otro programa para acceder a algunas secciones de la memoria virtual del kernel, puede activar el error de ID de segmento obsoleto. Puede hacer que la función dir_search() del kernel crea erróneamente que parte de una copia en memoria de un directorio del sistema de archivos se ha puesto a cero. Otro proceso de aplicación, distinto de lsof, que solicita al kernel que busque en el directorio (por ejemplo, mediante open(2)), puede hacer que dir_search() entre en un bucle infinito, lo que hace que el proceso de aplicación se bloquee.
Consulte las preguntas frecuentes de lsof (la sección de preguntas frecuentes indica su ubicación) y el archivo 00README de la distribución de lsof para obtener una descripción más completa del error de ID de segmento obsoleto, su APAR y los métodos para definir el uso de readx() al compilar lsof.
Linux: Esta opción de Linux solicita que lsof omita la información de todos los archivos TCP, UDP y UDPLITE IPv4 e IPv6 abiertos.
Esta opción de Linux es más útil cuando el sistema tiene un número extremadamente grande de archivos TCP, UDP y UDPLITE abiertos, cuyo procesamiento en los archivos /proc/net/tcp* y /proc/net/udp* llevaría mucho tiempo a lsof, y cuyo informe no es de interés.
Utilice esta opción con cuidado y solo cuando esté seguro de que la información que desea que muestre lsof no está asociada con archivos de socket TCP, UDP o UDPLITE abiertos.
Solaris 10 y superior: Esta opción de Solaris 10 y superior solicita el informe de las rutas almacenadas en caché para los archivos que se han eliminado, es decir, eliminados con rm(1) o unlink(2).
La ruta almacenada en caché va seguida de la cadena "``(eliminado)" para indicar que la ruta por la que se abrió el archivo ha sido eliminada.
Dado que los cambios realizados en la ruta, es decir, los cambios de nombre con mv(1) o rename(2), no se registran en la ruta almacenada en caché, lo que informa lsof es solo la ruta por la que se abrió el archivo, no su ruta final posiblemente diferente.
-z [z] especifica cómo se debe manejar la información de zona de Solaris 10 y superior.
Sin un argumento posterior (por ejemplo, NO z), la opción especifica que los nombres de zona se deben enumerar en la columna de salida ZONE.
La opción -z puede ir seguida de un nombre de zona, z. Esto hace que lsof enumere solo los archivos abiertos para los procesos de esa zona. Se pueden especificar varios pares de opciones y argumentos -z z para formar una lista de zonas con nombre. Cualquier archivo abierto de cualquier proceso en cualquiera de las zonas se enumerará, sujeto a otras condiciones especificadas por otras opciones y argumentos.
-Z [Z] especifica cómo se deben manejar los contextos de seguridad SELinux. Su soporte para la salida de caracteres de campo 'Z' está inhibido cuando SELinux está deshabilitado en el kernel de Linux en ejecución.
Consulte la SALIDA PARA OTROS PROGRAMAS para obtener más información sobre el carácter de salida de campo 'Z'.
Sin un argumento posterior (por ejemplo, NO Z), la opción especifica que los contextos de seguridad se deben enumerar en la columna de salida SECURITY-CONTEXT.
La opción -Z puede ir seguida de un nombre de contexto de seguridad comodín, Z. Esto hace que lsof enumere solo los archivos abiertos para los procesos en ese contexto de seguridad. Se pueden especificar varios pares de opciones y argumentos -Z Z para formar una lista de contextos de seguridad. Cualquier archivo abierto de cualquier proceso en cualquiera de los contextos de seguridad se enumerará, sujeto a otras condiciones especificadas por otras opciones y argumentos. Tenga en cuenta que Z puede ser A:B:C o *:B:C o A:B:* o *:*:C para hacer coincidir el contexto A:B:C.
-- La opción del doble signo menos es un marcador que indica el final de las opciones con clave.
Puede usarse, por ejemplo, cuando el primer nombre de archivo comienza con un signo menos. También
puede usarse cuando la ausencia de un valor para la última opción con clave debe indicarse mediante
la presencia de un signo menos en la opción siguiente y antes del inicio de los nombres de archivo.
names Son las rutas de archivos específicos que se van a listar. Los enlaces simbólicos se resuelven antes de usarlos.
El primer nombre puede separarse de las opciones anteriores con la opción ``--''.
Si un nombre es el directorio de montaje de un sistema de archivos o el dispositivo del sistema de archivos, lsof listará todos los archivos abiertos en el sistema de archivos. Para que se considere un sistema de archivos, el nombre debe coincidir con un nombre de directorio de montaje en la salida de mount(8) o coincidir con el nombre de un dispositivo de bloque asociado con un nombre de directorio de montaje. La opción +|-f se puede usar para forzar a lsof a considerar un nombre como un identificador de sistema de archivos (+f) o como un archivo simple (-f).
Si un nombre es una ruta a un directorio que no es el nombre del directorio de montaje de un sistema de archivos, se trata como un archivo normal; es decir, su listado se restringe a los procesos que lo tienen abierto como un archivo o como un directorio específico del proceso, como el directorio raíz o el directorio de trabajo actual. Para solicitar que lsof busque archivos abiertos dentro de un nombre de directorio, utilice las opciones +d s y +D D.
Si un nombre es el nombre base de una familia de archivos multiplexados (por ejemplo, /dev/pt[cs] de AIX), lsof listará todos los archivos multiplexados asociados en el dispositivo que estén abiertos (por ejemplo, /dev/pt[cs]/1, /dev/pt[cs]/2, etc.).
Si un nombre es un nombre de socket de dominio UNIX, lsof normalmente buscará en él por los caracteres del nombre, tal como se especifica y se registra en la estructura de socket del kernel. (Consulte el párrafo siguiente para una excepción a esta regla para Linux). Especificar una ruta relativa (por ejemplo, ./file) en lugar de la ruta absoluta del archivo (por ejemplo, /tmp/file) no funcionará porque lsof debe hacer coincidir los caracteres que especifica con lo que encuentra en las estructuras de socket de dominio UNIX del kernel.
Si un nombre es un nombre de socket de dominio UNIX de Linux, en un caso lsof puede buscarlo por su número de dispositivo e índice, lo que permite que name sea una ruta relativa. El caso requiere que la ruta absoluta, es decir, una que comience con una barra ('/'), sea utilizada por el proceso que creó el socket y, por lo tanto, se almacene en el archivo /proc/net/unix; y requiere que lsof pueda obtener los números de dispositivo e índice de la ruta absoluta en /proc/net/unix y de name a través de llamadas al sistema stat(2) exitosas. Cuando se cumplen estas condiciones, lsof podrá buscar el socket de dominio UNIX cuando se especifique alguna ruta para él en name. Por ejemplo, si la ruta es /dev/log y se inicia una búsqueda de lsof cuando el directorio de trabajo es /dev, entonces name podría ser ./log.
Si un nombre no es ninguno de los anteriores, lsof mostrará todos los archivos abiertos cuyos dispositivo e inode coincidan con los del nombre de ruta especificado.
Si también ha especificado la opción -b, los únicos nombres que puede especificar de forma segura son los sistemas de archivos para los que su tabla de montaje proporcione números de dispositivo alternativos. Consulte las secciones EVITAR BLOQUEOS DEL NÚCLEO y NÚMEROS DE DISPOSITIVO ALTERNATIVOS para obtener más información.
Los nombres de archivo múltiples se combinan en un único conjunto OR antes de participar en la selección de opciones AND.
AFS
Lsof admite el reconocimiento de archivos AFS para estos dialectos (y versiones de AFS):
AIX 4.1.4 (AFS 3.4a)
HP-UX 9.0.5 (AFS 3.4a)
Linux 1.2.13 (AFS 3.3)
Solaris 2.[56] (AFS 3.4a)
Es posible que reconozca archivos AFS en otras versiones de estos dialectos, pero no se ha probado. Dependiendo de cómo se implemente AFS, lsof puede reconocer archivos AFS en otros dialectos, o puede tener dificultades para reconocer archivos AFS en los dialectos admitidos.
Lsof puede tener dificultades para identificar todos los aspectos de los archivos AFS en los dialectos admitidos cuando el soporte del kernel AFS se implementa mediante módulos dinámicos cuyas direcciones no aparecen en la lista de nombres de variables del kernel. En ese caso, lsof puede tener que adivinar la identidad de los archivos AFS y es posible que no pueda obtener información del volumen del kernel que se necesite para calcular los números de nodo de volumen AFS. Cuando lsof no puede calcular los números de nodo de volumen, muestra en blanco en la columna NODE.
La opción -A A está disponible en algunas implementaciones de dialecto de lsof para especificar el archivo de lista de nombres donde se pueden encontrar las direcciones del kernel de los módulos dinámicos. Cuando esta opción está disponible, se mostrará en la salida de ayuda de lsof, que se presenta en respuesta a -h o -?.
Consulte las preguntas frecuentes de lsof (la sección de preguntas frecuentes indica su ubicación) para obtener más información sobre los módulos dinámicos, sus símbolos y cómo afectan a las opciones de lsof.
Debido a que las búsquedas de ruta AFS no parecen participar en las operaciones de caché de nombres del kernel, lsof no puede identificar los componentes de nombres de ruta para los archivos AFS.
SEGURIDAD
Lsof tiene tres características que pueden generar problemas de seguridad. En primer lugar, su modo de compilación predeterminado permite que cualquiera enumere todos los archivos abiertos con él. En segundo lugar, de forma predeterminada, crea un archivo de caché de dispositivos legible y grabable por el usuario en el directorio de inicio del ID de usuario real que ejecuta lsof. (Las características de listar todos los archivos abiertos y la caché de dispositivos se pueden deshabilitar cuando se compila lsof). En tercer lugar, sus opciones -k y -m nombran archivos de lista de nombres o memoria alternativos del kernel.
La restricción de la lista de todos los archivos abiertos está controlada por las opciones de tiempo de compilación HASSECURITY y HASNOSOCKSECURITY. Cuando se define HASSECURITY, lsof solo permitirá que el usuario root enumere todos los archivos abiertos. El usuario que no es root solo puede enumerar los archivos abiertos de los procesos que tienen el mismo número de identificación de usuario que el número de identificación de usuario real del proceso lsof (el que su usuario inició sesión).
Sin embargo, si se definen tanto HASSECURITY como HASNOSOCKSECURITY, cualquier usuario puede listar los archivos de socket abiertos, siempre y cuando se seleccionen con la opción -i.
Cuando HASSECURITY no está definido, cualquier usuario puede listar todos los archivos abiertos.
La salida de ayuda, que se presenta en respuesta a la opción -h o -?, proporciona el estado de las definiciones HASSECURITY y HASNOSOCKSECURITY.
Consulte la sección Seguridad del archivo 00README de la distribución de lsof para obtener información sobre cómo compilar lsof con las opciones HASSECURITY y HASNOSOCKSECURITY habilitadas.
La creación y el uso de un archivo de caché de dispositivos legible y escribible por el usuario están controlados por la opción de tiempo de compilación HASDCACHE. Consulte la sección ARCHIVO DE CACHÉ DE DISPOSITIVOS y las secciones que la siguen para obtener más detalles sobre cómo se forma su ruta. Por razones de seguridad, es importante tener en cuenta que en la distribución predeterminada de lsof, si el ID de usuario real bajo el cual se ejecuta lsof es root, el archivo de caché de dispositivos se escribirá en el directorio de inicio de root, por ejemplo, / o /root. Cuando HASDCACHE no está definido, lsof no escribe ni intenta leer un archivo de caché de dispositivos.
Cuando HASDCACHE está definido, la salida de ayuda de lsof, que se presenta en respuesta a las opciones -h, -D? o -?, proporcionará información sobre el manejo del archivo de caché de dispositivos. Cuando HASDCACHE no está definido, la salida de las opciones -h o -? no tendrá una descripción de la opción -D.
Antes de decidir desactivar la función de archivo de caché de dispositivos (habilitarla mejora el rendimiento de lsof al reducir la sobrecarga de inicio al examinar todos los nodos en /dev o /devices), lea la discusión sobre ella en el archivo 00DCACHE de la distribución de lsof y las preguntas frecuentes de lsof (la sección de preguntas frecuentes indica su ubicación).
SI TIENE DUDAS, PUEDE DESACTIVAR TEMPORALMENTE EL USO DEL ARCHIVO DE CACHÉ DE DISPOSITIVOS CON LA OPCIÓN -Di.
Cuando el usuario de lsof declara una lista de nombres de kernel alternativos o archivos de memoria con las opciones -k y -m, lsof verifica la autoridad del usuario para leerlos con access(2). Esto tiene como objetivo evitar que cualquier poder especial que puedan conferir los modos de lsof le permita leer archivos a los que normalmente no se puede acceder a través de la autoridad del ID de usuario real.
SALIDA
Esta sección describe la información que lsof enumera para cada archivo abierto. Consulte la sección SALIDA PARA OTROS PROGRAMAS para obtener información adicional sobre la salida que puede ser procesada por otro programa.
Lsof solo muestra los caracteres de 8 bits imprimibles (declarados como tales por isprint(3)). Los caracteres no imprimibles se imprimen en una de las tres formas: la forma C \[bfrnt]; la forma de carácter de control ^ (por ejemplo, ^@); o la forma hexadecimal con el prefijo \x (por ejemplo, \xab). El espacio es no imprimible en la columna COMMAND (\x20) y es imprimible en otros lugares.
Para algunos dialectos, si HASSETLOCALE está definido en el archivo de encabezado machine.h del dialecto, lsof imprimirá los caracteres de 8 bits extendidos de una configuración regional. El proceso de lsof debe recibir una variable de entorno de configuración regional (por ejemplo, LANG) cuyo valor represente una configuración regional conocida en la que los caracteres extendidos se consideren imprimibles por isprint(3). De lo contrario, lsof considera que los caracteres extendidos no son imprimibles y los imprime de acuerdo con sus reglas para los caracteres no imprimibles, indicadas anteriormente. Consulte la página man de setlocale(3) de su dialecto para conocer los nombres de otras variables de entorno que se pueden usar en lugar de LANG, por ejemplo, LC_ALL, LC_CTYPE, etc.
El soporte de Lsof para la configuración regional de un dialecto también cubre los caracteres anchos, por ejemplo, UTF-8, cuando se definen HASSETLOCALE y HASWIDECHAR en el archivo de encabezado machine.h del dialecto, y cuando se ha definido una configuración regional de idioma adecuada en la variable de entorno apropiada para el proceso de lsof. Los caracteres anchos son imprimibles bajo estas condiciones si iswprint(3) informa que lo son.
Si no se definen HASSETLOCALE, HASWIDECHAR y una configuración regional de idioma adecuada, o si iswprint(3) informa que los caracteres anchos no son imprimibles, lsof considera los caracteres anchos como no imprimibles e imprime cada uno de sus 8 bits de acuerdo con sus reglas para caracteres no imprimibles, que se indican anteriormente.
Consulte las respuestas a las preguntas sobre el "soporte de configuración regional de idioma" en las preguntas frecuentes de lsof (la sección de preguntas frecuentes indica su ubicación) para obtener más información.
Lsof dimensiona dinámicamente las columnas de salida cada vez que se ejecuta, lo que garantiza que cada columna tenga un tamaño mínimo. También garantiza que cada columna esté separada de su predecesora por al menos un espacio.
COMMAND contiene los primeros nueve caracteres del nombre del comando UNIX asociado al proceso. Si se especifica un valor distinto de cero para la opción +c w, la columna contiene los primeros w caracteres del nombre del comando UNIX asociado al proceso, hasta el límite de caracteres proporcionados a lsof por el dialecto UNIX. (Consulte la descripción de la opción +c w o las preguntas frecuentes de lsof para obtener más información. La sección de preguntas frecuentes indica su ubicación).
Si w es menor que la longitud del título de la columna, "COMMAND", se aumentará a esa longitud.
Si se especifica un valor cero para la opción +c w, la columna contiene todos los caracteres del nombre del comando UNIX asociado al proceso.
Todos los caracteres del nombre del comando que mantiene el kernel en sus estructuras se muestran en la salida de campo cuando se especifica el descriptor de nombre de comando ('c'). Consulte la sección OUTPUT FOR OTHER COMMANDS para obtener información sobre la selección de la salida de campo y el descriptor de nombre de comando asociado.
PID es el número de identificación del proceso.
TID es el número de identificación de la tarea (hilo), si el dialecto admite el informe de tareas (hilos) y se está listando una tarea (hilo). (Si la salida de ayuda, es decir, la salida de las opciones -h o -?, muestra esta opción, entonces el dialecto admite el informe de tareas (hilos)).
Una columna TID en blanco en Linux indica un proceso, es decir, una tarea que no es un hilo.
TASKCMD es el nombre del comando de la tarea. Generalmente, será el mismo que el proceso indicado en la columna COMMAND, pero algunas implementaciones de tareas (por ejemplo, Linux) permiten que una tarea cambie su nombre de comando.
El ancho de la columna TASKCMD está sujeto a la misma limitación de tamaño que la columna COMMAND.
ZONE es el nombre de la zona de Solaris 10 o superior. Esta columna debe seleccionarse con la opción -z.
SECURITY-CONTEXT es el contexto de seguridad de SELinux. Esta columna debe seleccionarse con la opción -Z. Tenga en cuenta que la opción -Z está inhibida cuando SELinux está desactivado en el kernel de Linux en ejecución.
PPID es el número de identificación del proceso padre del proceso. Solo se muestra cuando se ha especificado la opción -R.
PGID es el número de identificación del grupo de procesos asociado con el proceso. Solo se muestra cuando se ha especificado la opción -g.
USER es el número de identificación de usuario o el nombre de inicio de sesión del usuario al que pertenece el proceso, generalmente el mismo que se informa en [ps]({filename}../../ps)(1). Sin embargo, en Linux, USER es el número de identificación de usuario o el nombre de inicio de sesión que es propietario del directorio en /proc donde lsof encuentra información sobre el proceso. Generalmente, este es el mismo valor que se informa en [ps]({filename}../../ps)(1), pero puede diferir cuando el proceso ha cambiado su ID de usuario efectivo. (Consulte la descripción de la opción -l para obtener información sobre cuándo se muestra un número de ID de usuario o un nombre de inicio de sesión).
FD es el número de descriptor de archivo del archivo o:
cwd directorio de trabajo actual;
Lnn referencias de bibliotecas (AIX);
ctty tty de caracteres;
DEL archivo eliminado;
err error de información FD (consulte la columna NAME);
fp. Fileport (Darwin);
jld directorio jail (FreeBSD);
ltx texto de biblioteca compartida (código y datos);
Mxx número de tipo de memoria asignada hexadecimal xx.
m86 archivo asignado de DOS Merge;
mem archivo asignado en memoria;
mmap dispositivo asignado en memoria;
NOFD para un directorio Linux /proc/
FD va seguido de uno de estos caracteres, que describe el modo en el que se abre el archivo:
r para acceso de lectura;
w para acceso de escritura;
u para acceso de lectura y escritura;
espacio si el modo es desconocido y no hay bloqueo
carácter que sigue;
'-' si el modo es desconocido y hay un bloqueo
carácter que sigue.
El carácter de modo va seguido de uno de estos caracteres de bloqueo, que describe el tipo de bloqueo aplicado al archivo:
N para un bloqueo NFS de Solaris de tipo desconocido;
r para un bloqueo de lectura en una parte del archivo;
R para un bloqueo de lectura en todo el archivo;
w para un bloqueo de escritura en una parte del archivo;
W para un bloqueo de escritura en todo el archivo;
u para un bloqueo de lectura y escritura de cualquier longitud;
U para un bloqueo de tipo desconocido;
x para un bloqueo SCO OpenServer Xenix en una parte del archivo;
X para un bloqueo SCO OpenServer Xenix en todo el archivo;
espacio si no hay bloqueo.
Consulte la sección LOCKS para obtener más información sobre el carácter de información del bloqueo.
El contenido de la columna FD constituye un único campo para el análisis en scripts de postprocesamiento.
Los números de FD mayores que 9999 se abrevian a un \*'' seguido de los últimos tres dígitos. Por ejemplo, 10001 aparece como*001''.
TYPE es el tipo de nodo asociado con el archivo, por ejemplo, VDIR, VREG, etc.
o ``ax25'' para un socket Linux AX.25;
o ``a_inode'' para un inodo anónimo;
o ``icmp'' para un socket ICMP;
o ``inet'' para un socket de dominio Internet;
o ``ipx'' para un socket IPX;
o ``key'' para un socket de administración de claves interno;
o ``lla'' para un archivo de acceso a nivel de enlace HP-UX;
o ``ndrv'' para un socket de controlador de red;
o ``netlink'' para un socket netlink;
o ``pack'' para un socket de paquete;
o ``ppp'' para un socket PPP;
o ``raw'' para un socket sin procesar;
o ``raw6'' para un socket sin procesar IPv6;
o ``rte'' para un socket AF_ROUTE;
o ``sock'' para un socket de dominio desconocido;
o ``systm'' para un socket de sistema;
o ``unix'' para un socket de dominio UNIX;
o ``x.25'' para un socket x.25 HP-UX;
o ``ATALK'' para un socket AppleTalk;
o ``BLK'' para un archivo de dispositivo de bloque;
o ``CHR'' para un archivo de dispositivo de carácter;
o ``DEL'' para un archivo de mapa de Linux que ha sido eliminado;
o ``DIR'' para un directorio;
o ``DOOR'' para un archivo VDOOR;
o ``EVENTFD'' para un eventfd;
o ``FIFO'' para un archivo de dispositivo FIFO;
o ``FSEVENTS'' para fsevents;
o ``IPv4'' para un socket IPv4;
o ``IPv6'' para un archivo de red IPv6 abierto, incluso si su dirección es IPv4, mapeada en una dirección IPv6;
o ``KQUEUE'' para un archivo de cola de eventos de kernel estilo BSD;
o ``LINK'' para un archivo de enlace simbólico;
o ``MPB'' para un archivo de bloque multiplexado;
o ``MPC'' para un archivo de carácter multiplexado;
o ``PAS'' para un archivo /proc/as;
o ``PAXV'' para un archivo /proc/auxv;
o ``PCRE'' para un archivo /proc/cred;
o ``PCTL'' para un archivo de control /proc;
o ``PCUR'' para el proceso actual /proc;
o ``PCWD'' para el directorio de trabajo actual /proc;
o ``PDIR'' para un directorio /proc;
o ``PETY'' para un tipo de ejecutable /proc (etype);
o ``PFD'' para un descriptor de archivo /proc;
o ``PFDR'' para un directorio de descriptor de archivo /proc;
o ``PFIL'' para un archivo ejecutable /proc;
o ``PFPR'' para un conjunto de registros FP /proc;
o ``PGD'' para un archivo /proc/pagedata;
o ``PGID'' para un archivo de notificación de grupo /proc;
o ``PIPE'' para tuberías;
o ``PLC'' para un archivo /proc/lwpctl;
o ``PLDR'' para un directorio /proc/lpw;
o ``PLDT'' para un archivo /proc/ldt;
o ``PLPI'' para un archivo /proc/lpsinfo;
o ``PLST'' para un archivo /proc/lstatus;
o ``PLU'' para un archivo /proc/lusage;
o ``PLWG'' para un archivo /proc/gwindows;
o ``PLWI'' para un archivo /proc/lwpsinfo;
o ``PLWS'' para un archivo /proc/lwpstatus;
o ``PLWU'' para un archivo /proc/lwpusage;
o ``PLWX'' para un archivo /proc/xregs;
o ``PMAP'' para un archivo de mapa /proc (map);
o ``PMPS'' para un archivo /proc/maps;
o ``PMEM'' para un archivo de imagen de memoria /proc;
o ``PNTF'' para un archivo de notificación de procesos de /proc;
o ``POBJ'' para un archivo de objetos de /proc;
o ``PODR'' para un directorio de objetos de /proc;
o ``POLP'' para un archivo de procesos ligero de formato antiguo de /proc;
o ``POPF'' para un archivo PID de formato antiguo de /proc;
o ``POPG'' para un archivo de datos de página de formato antiguo de /proc;
o ``PORT'' para una tubería con nombre SYSV;
o ``PREG'' para un archivo de registro de /proc;
o ``PRMP'' para un archivo /proc/rmap;
o ``PROCDSC'' para un descriptor de procesador;
o ``PRTD'' para un directorio raíz de /proc;
o ``PSGA'' para un archivo /proc/sigact;
o ``PSIN'' para un archivo /proc/psinfo;
o ``PSTA'' para un archivo de estado de /proc;
o ``PSXMQ'' para un archivo de cola de mensajes POSIX;
o ``PSXSEM'' para un archivo de semáforo POSIX;
o ``PSXSHM'' para un archivo de memoria compartida POSIX;
o ``PTS'' para un archivo de /dev/pts;
o ``PUSG'' para un archivo /proc/usage;
o ``PW'' para un archivo /proc/watch;
o ``PXMP'' para un archivo /proc/xmap;
o ``REG'' para un archivo regular;
o ``SHM'' para un archivo de memoria compartida;
o ``SMT'' para un archivo de transporte de memoria compartida;
o ``STR'' para flujos;
o ``STSO'' para un socket de flujo;
o ``UNKN'' para un archivo desconocido;
o ``UNKNcwd'' para un directorio de trabajo actual desconocido;
o ``UNKNdel'' para un archivo eliminado desconocido;
o ``UNKNfd'' para un descriptor de archivo desconocido;
o ``UNKNmem'' para un archivo asignado a memoria desconocido;
o ``UNKNrtd'' para un directorio raíz desconocido;
o ``UNKNtxt'' para un texto de programa desconocido;
o ``UNNM'' para un archivo de tipo sin nombre;
o ``XNAM'' para un archivo especial OpenServer Xenix de tipo desconocido;
o ``XSEM'' para un archivo de semáforo OpenServer Xenix;
o ``XSD'' para un archivo de datos compartidos OpenServer Xenix;
o ``UNSP'' para un archivo no compatible;
o los cuatro octetos de número de tipo si el nombre correspondiente no se conoce.
FILE-ADDR contiene la dirección de la estructura de archivo del kernel cuando se especifica f con +f;
FCT contiene el recuento de referencias de archivo de la estructura de archivo del kernel cuando se especifica c con +f;
FILE-FLAG cuando se especifica g o G con +f, este campo contiene el contenido del miembro f_flag[s] de la estructura de archivo del kernel y las marcas de archivo de proceso abierto del kernel (si están disponibles); `G` hace que se muestren en formato hexadecimal; `g`, como nombres abreviados; se pueden mostrar dos listas con entradas separadas por comas, las listas separadas por un punto y coma (;); la primera lista puede contener nombres abreviados para los valores de f_flag[s] de la siguiente tabla:
AIO entrada/salida asíncrona (p. ej., FAIO)
AP añadir
ASYN entrada/salida asíncrona (p. ej., FASYNC)
BAS bloque, prueba y establece en uso
BKIU bloque si está en uso
BL utiliza los desplazamientos de bloque
BSK búsqueda de bloque
CA evita la copia
CIO entrada/salida simultánea
CLON clonar
CLRD CL leer
CR crear
DF diferir
DFI diferir IND
DFLU vaciado de datos
DIR directo
DLY retraso
DOCL clonar
DSYN integridad solo de datos
DTY debe ser un directorio
EVO solo evento
EX abrir para ejecutar
EXCL abrir exclusivo
FSYN escrituras sincronizadas
GCDF diferir durante unp_gc() (AIX)
GCMK marcar durante unp_gc() (AIX)
GTTY accedido a través de /dev/tty
HUP HUP en curso
KERN kernel
KIOC ioctl emitido por el kernel
LCK tiene bloqueo
LG archivo grande
MBLK bloque de mensajes de flujo
MK marcar
MNT montar
MSYN sincronización múltiple
NATM no actualizar atime
NB entrada/salida no bloqueante
NBDR sin comprobación BDRM
NBIO entrada/salida no bloqueante SYSV
NBF el almacenamiento en búfer n está en efecto
NC sin caché
ND sin retraso
NDSY sin sincronización de datos
NET red
NFLK no seguir enlaces
NMFS sistema de archivos NM
NOTO deshabilitar la detención en segundo plano
NSH sin compartir
NTTY sin TTY de control
OLRM espejo OLR
PAIO entrada/salida asíncrona POSIX
PATH ruta
PP tubería POSIX
R leer
RC caché de archivos y registros
REV revocado
RSH lectura compartida
RSYN sincronización de lectura
RW acceso de lectura y escritura
SL bloqueo compartido
SNAP instantánea cocida
SOCK socket
SQSH conjunto compartido de Sequent en la apertura
SQSV conjunto SVM de Sequent en la apertura
SQR reparación del conjunto de Sequent en la apertura
SQS1 apertura compartida completa de Sequent
SQS2 apertura compartida parcial de Sequent
STPI detener la entrada/salida
SWR lectura sincronizada
SYN integridad del archivo durante la escritura
TCPM evitar la colisión de TCP
TMPF archivo temporal
TR truncar
W escribir
WKUP sincronización de entrada/salida paralela
WTG sincronización de entrada/salida paralela
VH vhangup pendiente
VTXT texto virtual
XL bloqueo exclusivo
esta lista de nombres se derivó de las macros `#define` en los archivos de encabezado del dialecto `<fcntl.h>`, `<linux/fs.h>`, `<sys/fcntl.c>`, `<sys/fcntlcom.h>` y `<sys/file.h>`; consulte el archivo de encabezado `common.h` para obtener una lista que muestre la correspondencia entre los nombres abreviados anteriores y las definiciones de los archivos de encabezado;
la segunda lista (después del punto y coma) puede contener nombres abreviados para los indicadores de archivos abiertos por proceso del kernel de esta tabla:
ALLC asignado
BR el archivo ha sido leído
BHUP la actividad se detuvo mediante SIGHUP
BW el archivo ha sido escrito
CLSG cerrando
CX cerrar al ejecutar (consulte `fcntl(F_SETFD)`)
LCK se aplicó un bloqueo
MP mapeado en memoria
OPIP abrir en curso
RSVW espera reservada
SHMT se estableció UF_FSHMAT (AIX)
USE en uso (multihilo)
NODE-ID (o INODE-ADDR para algunos dialectos) contiene un identificador único para el nodo de archivo (generalmente la dirección del nodo v del kernel o del inodo, pero también ocasionalmente una concatenación del número de dispositivo y nodo) cuando se especifica `n` con `+f`;
DEVICE contiene los números de dispositivo, separados por comas, para un archivo especial de caracteres, un archivo especial de bloques, un archivo regular, un directorio o un archivo NFS;
o "memoria" para un nodo del sistema de archivos de memoria en Tru64 UNIX;
o la dirección del área de datos privados de un flujo de socket Solaris;
o una dirección de referencia del kernel que identifica el archivo (la dirección de referencia del kernel puede usarse para FIFO, por ejemplo).
o la dirección base o el nombre del dispositivo del dispositivo de socket AX.25 de Linux.
Normalmente, solo se muestran los treinta y dos bits inferiores de las direcciones del kernel Tru64 UNIX.
SIZE, SIZE/OFF o OFFSET
es el tamaño del archivo o el desplazamiento del archivo en bytes. Se muestra un valor en esta columna solo si está disponible. Lsof muestra el valor apropiado, ya sea el tamaño o el desplazamiento, según el tipo de archivo y la versión de lsof.
En algunos dialectos UNIX, lsof no puede obtener información precisa o coherente sobre el desplazamiento del archivo de sus fuentes de datos del kernel, a veces solo para tipos de archivos específicos (por ejemplo, archivos de socket). En otros casos, los archivos no tienen tamaños reales (por ejemplo, sockets, FIFOs, pipes), por lo que lsof muestra para sus tamaños las cantidades de contenido que encuentra en sus descriptores de búfer del kernel (por ejemplo, recuentos de tamaño del búfer de socket o tamaños de ventana TCP/IP). Consulte las preguntas frecuentes de lsof (la sección de preguntas frecuentes indica su ubicación) para obtener más información.
El tamaño del archivo se muestra en decimal; el desplazamiento normalmente se muestra en decimal con un prefijo de 0t'' si contiene 8 dígitos o menos; en hexadecimal con un prefijo de0x'' si es más largo que 8 dígitos. (Consulte la descripción de la opción -o o para obtener información sobre cuándo 8 podría tener un valor diferente).
Por lo tanto, los prefijos 0t'' y0x'' identifican un desplazamiento cuando la columna puede contener tanto un tamaño como un desplazamiento (es decir, su título es SIZE/OFF).
Si se especifica la opción -o, lsof siempre muestra el desplazamiento del archivo (o nada si no hay desplazamiento disponible) y etiqueta la columna como OFFSET. El desplazamiento siempre comienza con 0t'' o0x'' como se describe anteriormente.
El usuario de lsof puede controlar el cambio de 0t'' a0x'' con la opción -o o. Consulte su descripción para obtener más información.
Si se especifica la opción -s, lsof siempre muestra el tamaño del archivo (o nada si no hay tamaño disponible) y etiqueta la columna como SIZE. Las opciones -o y -s son mutuamente excluyentes; no se pueden especificar ambas.
Si se especifica la opción -H, lsof muestra el tamaño del archivo en un formato legible por humanos.
Para los archivos que no tienen un tamaño fijo (por ejemplo, que no residen en un dispositivo de disco), lsof mostrará la información apropiada sobre el tamaño o la posición actual del archivo si está disponible en las estructuras del kernel que definen el archivo.
NLINK contiene el recuento de enlaces del archivo cuando se ha especificado +L;
NODE es el número de nodo de un archivo local;
o el número de inodo de un archivo NFS en el host de servidor;
o el tipo de protocolo de Internet (por ejemplo, ``TCP'');
o ``STR'' para una secuencia;
o ``CCITT'' para un socket x.25 HP-UX;
o el IRQ o el número de inodo de un dispositivo de socket AX.25 de Linux.
NAME es el nombre del punto de montaje y el sistema de archivos en el que reside el archivo;
o el nombre de un archivo especificado en la opción de nombres (después de que se hayan resuelto todos los enlaces simbólicos);
o el nombre de un dispositivo especial de carácter o un dispositivo especial de bloque;
o las direcciones de red locales y remotas de un archivo de red; la dirección o el número de host local seguido de dos puntos (':'), el puerto, ``->'' y la dirección remota de dos partes; las direcciones IP se pueden informar como números o nombres, según las opciones +|-M, -n y -P; los números IPv6 separados por dos puntos están encerrados entre corchetes; las direcciones IPv4 INADDR_ANY y IPv6 IN6_IS_ADDR_UNSPECIFIED y los números de puerto cero se representan mediante un asterisco ('*'); una dirección de destino UDP puede ir seguida de la cantidad de tiempo transcurrido desde que se envió el último paquete al destino; las direcciones remotas de TCP, UDP y UDPLITE pueden ir seguidas de información de TCP/TPI entre paréntesis (estado (por ejemplo, ``(ESTABLISHED)'', ``(Unbound)''), tamaños de cola y tamaños de ventana (no todos los dialectos)) de forma similar a como lo informa [netstat]({filename}../../netstat)(1); consulte la descripción de la opción -T o la descripción del campo TCP/TPI en OUTPUT FOR OTHER PROGRAMS para obtener más información sobre el estado, el tamaño de la cola y el tamaño de la ventana.
o la dirección o el nombre de un socket de dominio UNIX, posiblemente incluyendo el nombre del dispositivo de clon de flujo, el nombre de la ruta del objeto del sistema de archivos, las direcciones de kernel locales y remotas,
la información del par de sockets y la dirección del nodo virtual enlazado;
o los nombres de los puntos de montaje locales y remotos de un archivo NFS;
o ``STR'', seguido del nombre del flujo;
o el nombre del dispositivo de flujo de caracteres, seguido de ``->'' y el nombre del flujo o una lista de
nombres de módulos de flujo, separados por ``->'';
o ``STR:'', seguido de los nombres del dispositivo y los módulos de flujo de SCO OpenServer, separados
por ``->'';
o el nombre del directorio del sistema, `` -- '', y tantos componentes del nombre de la ruta como
`lsof` pueda encontrar en la caché de nombres del kernel para los dialectos seleccionados (consulte la sección CACHÉ DE NOMBRES DEL KERNEL para obtener más información);
o ``PIPE->'', seguido de una dirección de destino de canal del kernel de Solaris;
o ``COMMON:'', seguido del nombre del dispositivo de la estructura de información del nodo virtual común de Solaris;
o la familia de direcciones, seguida de una barra (`/`), seguida de catorce bytes separados por comas de una dirección de socket RAW no-Internet;
o la dirección local de HP-UX x.25, seguida del número de conexión virtual (si existe), seguida de la dirección remota (si existe);
o ``(dead)'' para archivos Tru64 UNIX disociados; normalmente archivos de terminal que se han marcado con la llamada ioctl TIOCNOTTY y cerrado por daemon;
o ``rd=<offset>'' y ``wr=<offset>'' para los valores de los desplazamientos de lectura y escritura de
un FIFO;
o ``clone n:/dev/event'' para clones de archivos de SCO OpenServer del dispositivo /dev/event, donde n es el número de dispositivo secundario del archivo;
o ``(socketpair: n)'' para un socket de dominio UNIX de Solaris 2.6, 8, 9 o 10, creado por
la función de red socketpair(3N);
o ``no PCB'' para archivos de socket que no tienen un bloque de protocolo asociado,
opcionalmente seguido de `, CANTSENDMORE'' si el envío en el socket ha sido desactivado,
o `, CANTRCVMORE'' si la recepción en el socket ha sido desactivada (por ejemplo, mediante la función [shutdown]({filename}../../shutdown)(2));
o las direcciones locales y remotas de un archivo de socket IPX de Linux en el formato
<net>:[<nodo>:]<puerto>, seguido entre paréntesis por los tamaños de las colas de transmisión y recepción, y el estado de la conexión;
o ``dgram'' o ``stream'' para el tipo de sockets de dominio UNIX en kernel de UnixWare 7.1.1 y superior, seguido de dos puntos (':') y la ruta local cuando esté disponible, seguido de
``->'' y la ruta remota o la dirección de socket del kernel en hexadecimal cuando esté disponible;
o el valor de asociación, el índice de asociación, el valor de punto final, la dirección local, el puerto local, la dirección remota y el puerto remoto para los sockets SCTP de Linux;
o ``protocol:'' seguido del atributo de protocolo del socket de Linux.
Para los dialectos que admiten un sistema de archivos namefs'', que permite adjuntar un archivo a otro con fattach(3C), lsof agregará(FA:<-'' si <address2> se ha adjuntado a este nodo cuyo адрес es <address1>; y->'' si
Lsof puede agregar dos notas entre paréntesis a la columna NAME para los archivos abiertos de Solaris 10: (?)'' si
lsof considera que el nombre de la ruta es de precisión cuestionable; y(deleted)'' si se ha especificado la opción -X y lsof detecta que el nombre de la ruta del archivo abierto se ha eliminado. Consulte las preguntas frecuentes de lsof
(La sección de preguntas frecuentes indica su ubicación.) para obtener más información sobre estas adiciones a la columna NAME.
BLOQUEOS
Lsof no puede informar adecuadamente sobre la amplia variedad de bloqueos de archivos UNIX en un solo carácter. Lo que informa en un solo carácter es un compromiso entre la información que encuentra en el kernel y las limitaciones del formato de informe.
Además, cuando un proceso mantiene varios bloqueos a nivel de bytes en un archivo, lsof solo informa el estado
del primer bloqueo que encuentra. Si es un bloqueo a nivel de bytes, entonces se informará el carácter de bloqueo en minúsculas (es decir, r',w' o `x') en lugar del equivalente en mayúsculas informado
para un bloqueo de archivo completo.
En general, lsof solo puede informar sobre los bloqueos mantenidos por los procesos locales en los archivos locales. Cuando un proceso local establece un bloqueo en un archivo montado de forma remota (por ejemplo, NFS), el host del servidor remoto generalmente registra el estado del bloqueo. Una excepción es Solaris: en algunos niveles de parche de 2.3 y en todas las versiones superiores a 2.4, el kernel de Solaris registra información sobre los bloqueos remotos en las estructuras locales.
Lsof tiene dificultades para informar sobre los bloqueos para algunos dialectos UNIX. Consulte la sección BUGS de esta página de manual o las preguntas frecuentes de lsof (La sección de preguntas frecuentes indica su ubicación.) para obtener más información.
SALIDA PARA OTROS PROGRAMAS
Cuando se especifica la opción -F, lsof produce una salida adecuada para el procesamiento por otro programa, por ejemplo, un script awk o Perl, o un programa C.
Cada unidad de información se muestra en un campo que se identifica con un carácter inicial y se termina con un NL (012) (o un NUL (000) si se especifica el carácter identificador de campo 0 (cero)). Los datos del campo siguen inmediatamente después del carácter identificador del campo y se extienden hasta el terminador del campo.
Es posible considerar la salida de campos como conjuntos de procesos y archivos. Un conjunto de procesos comienza con un campo cuyo identificador es `p' (para identificador de proceso (PID)). Se extiende hasta el comienzo del siguiente campo PID o el comienzo del primer conjunto de archivos del proceso, lo que ocurra primero. Incluido en el conjunto de procesos hay campos que identifican el comando, la identificación del grupo de procesos (PGID), el ID de tarea (hilo) (TID) y el número de ID de usuario (UID) o nombre de inicio de sesión.
Un conjunto de archivos comienza con un campo cuyo identificador es `f' (para descriptor de archivo). Le siguen líneas que describen el modo de acceso del archivo, el estado de bloqueo, el tipo, el dispositivo, el tamaño, el desplazamiento, el inodo, el protocolo, el nombre y los nombres del módulo de flujo. Se extiende hasta el comienzo del siguiente conjunto de archivos o procesos, lo que ocurra primero.
Cuando se selecciona el terminador de campo NUL (000) con el carácter identificador de campo 0 (cero), lsof termina cada conjunto de procesos y archivos con un carácter NL (012).
Lsof siempre produce un campo, el campo PID (`p'). En el modo de repetición, también se produce el marcador (`m'). Todos los demás campos se pueden declarar opcionalmente en la lista de caracteres identificadores de campo que sigue a la opción -F. Cuando un carácter de selección de campo identifica un elemento que lsof no muestra normalmente (por ejemplo, PPID, seleccionado con -R), la especificación del carácter de campo (por ejemplo, ``-FR'') también selecciona la visualización del elemento.
Lsof en las versiones de 4.88 a 4.93.2 siempre produjo un campo más, el campo del descriptor de archivo (`f'). Sin embargo, lsof en esta versión no lo produce. Este cambio tiene como objetivo admitir el caso de uso en el que un usuario solo necesita el campo PID y no necesita el campo del descriptor de archivo. Especifique `f' explícitamente si necesita el campo.
Es totalmente posible seleccionar un conjunto de campos que no se puedan analizar fácilmente; por ejemplo, si no se selecciona el campo del descriptor de archivo, puede ser difícil identificar los conjuntos de archivos. Para ayudarle a evitar esta dificultad, lsof admite la opción -F; selecciona la salida de todos los campos con terminadores NL (la combinación de opciones -F0 selecciona la salida de todos los campos con terminadores NUL). Por razones de compatibilidad, ni -F ni -F0 seleccionan el campo del dispositivo sin formato.
Estos son los campos que lsof producirá. El único carácter que se muestra primero es el identificador del campo.
a modo de acceso al archivo
c nombre del comando del proceso (todos los caracteres de la estructura proc o de usuario)
C recuento de uso de la estructura del archivo
d código de carácter del dispositivo del archivo
D número de dispositivo principal/secundario del archivo (0x<hexadecimal>)
f descriptor de archivo
F dirección de la estructura del archivo (0x<hexadecimal>)
G indicadores del archivo (0x<hexadecimal>; nombres si sigue +fg)
g ID del grupo de procesos
i número de inodo del archivo
K ID de tarea
k recuento de enlaces
l estado de bloqueo del archivo
L nombre de inicio de sesión del proceso
m marcador entre salidas repetidas (siempre se selecciona en el modo de repetición)
M nombre del comando de la tarea
n nombre del archivo, comentario, dirección de Internet
N identificador de nodo (0x<hexadecimal>)
o desplazamiento del archivo (0t<decimal> o 0x<hexadecimal>, consulte -o o)
p ID del proceso (siempre se selecciona)
P nombre del protocolo
r número de dispositivo sin formato (0x<hexadecimal>)
R ID del proceso primario
s tamaño del archivo (decimal)
S ID del flujo del archivo
t tipo de archivo
T información de TCP/TPI, identificada por prefijos (la '=' es parte del prefijo):
QR=tamaño de la cola de lectura
QS=tamaño de la cola de envío
SO=opciones y valores del socket (no todas las variantes)
SS=estados del socket (no todas las variantes)
ST=estado de la conexión
TF=indicadores y valores de TCP (no todas las variantes)
WR=tamaño de lectura de la ventana (no todas las variantes)
WW=tamaño de escritura de la ventana (no todas las variantes)
(La información de TCP/TPI no se informa para todas las variantes de UNIX admitidas. La salida de ayuda -h o -? para la opción -T mostrará qué información de TCP/TPI se puede solicitar).
u ID de usuario del proceso
z nombre de zona de Solaris 10 y superior
Z contexto de seguridad SELinux (se inhibe cuando SELinux está deshabilitado)
0 utilice el carácter terminador de campo NUL en lugar de NL
19 identificadores de campo específicos de la variante (la salida de -F? identifica la información que se puede encontrar en los campos específicos de la variante).
Puede obtener información de ayuda en línea sobre estos caracteres y sus descripciones especificando la opción -F?. (Escape el carácter ? según lo requiera su shell). Puede encontrar información adicional sobre el contenido de los campos en la sección de SALIDA.
Como ejemplo, \-F pcfn` seleccionará el ID de proceso (p), el nombre del comando (c), el descriptor de archivo (f) y el nombre del archivo (n) con un carácter terminador de campo NL; \-F pcfn0` selecciona la misma salida con un carácter terminador de campo NUL (000).
Lsof no produce todos los campos para cada proceso o conjunto de archivos, solo aquellos que están disponibles. Algunos campos son mutuamente excluyentes: caracteres de dispositivo de archivo y números de dispositivo principal/secundario; número de nodo de archivo y nombre de protocolo; nombre de archivo e identificación de flujo; tamaño de archivo y desplazamiento. Uno u otro miembro de estos conjuntos mutuamente excluyentes aparecerá en la salida de campo, pero no ambos.
Normalmente, lsof termina cada campo con un carácter NL (012). El identificador de campo 0 (cero) puede especificarse para cambiar el carácter terminador de campo a un NUL (000). Un terminador NUL puede facilitar el procesamiento con xargs (1), por ejemplo, o con programas cuyos mecanismos de comillas pueden no manejar fácilmente la gama de caracteres en la salida de campo. Cuando se utiliza el terminador de campo NUL, lsof termina cada proceso y conjunto de archivos con un NL (012).
Se incluyen tres ayudas para producir programas que puedan procesar la salida de campo de lsof en la distribución de lsof. La primera es un archivo de encabezado C, lsof_fields.h, que contiene símbolos para los caracteres de identificación de campo, índices para almacenarlos en una tabla y cadenas de explicación que se pueden compilar en programas. Lsof utiliza este archivo de encabezado.
La segunda ayuda es un conjunto de scripts de ejemplo que procesan la salida de campos, escritos en awk, Perl 4 y Perl 5. Se encuentran en el subdirectorio scripts de la distribución de lsof.
La tercera ayuda es la biblioteca C utilizada para la suite de pruebas de lsof. La suite de pruebas está escrita en C y utiliza la salida de campos para validar el correcto funcionamiento de lsof. La biblioteca se puede encontrar en el archivo tests/LTlib.c de la distribución de lsof. La biblioteca utiliza la primera ayuda, el archivo de encabezado lsof_fields.h.
BLOQUEOS Y TIEMPOS DE ESPERA
Lsof puede ser bloqueado por algunas funciones del kernel que utiliza: lstat(2), readlink(2) y stat(2). Estas funciones se bloquean en el kernel, por ejemplo, cuando los hosts donde residen los sistemas de archivos montados se vuelven inaccesibles.
Lsof intenta romper estos bloqueos con temporizadores y procesos hijo, pero las técnicas no son del todo fiables. Cuando lsof logra romper un bloqueo, lo informará con un mensaje de error. Los mensajes se pueden suprimir con las opciones -t y -w.
El valor de tiempo de espera predeterminado se puede mostrar con la opción -h o -?, y se puede cambiar con la opción -S [t]. El mínimo para t es de dos segundos, pero debe evitarse valores pequeños, ya que una respuesta lenta del sistema puede hacer que los tiempos de espera cortos caduquen inesperadamente y posiblemente detengan lsof antes de que pueda producir alguna salida.
Cuando lsof tiene que romper un bloqueo durante su acceso a la información del sistema de archivos montado, normalmente continúa, aunque con menos información disponible para mostrar sobre los archivos abiertos.
Lsof también puede configurarse para evitar la protección de temporizadores y procesos hijo al utilizar las funciones del kernel que podrían bloquearse especificando la opción -O. Si bien esto permitirá que lsof se inicie con menos sobrecarga, expone completamente a lsof a las situaciones del kernel que podrían bloquearlo. Utilice esta opción con precaución.
EVITAR BLOQUEOS DEL NÚCLEO
Puede utilizar la opción -b para indicarle a lsof que evite el uso de funciones del kernel que bloquearían. Se aplican algunas precauciones.
En primer lugar, el uso de esta opción generalmente requiere que su sistema proporcione números de dispositivo alternativos en lugar de los números de dispositivo que lsof obtendría normalmente con las funciones del kernel lstat(2) y stat(2). Consulte la sección NÚMEROS DE DISPOSITIVO ALTERNATIVOS para obtener más información sobre los números de dispositivo alternativos.
En segundo lugar, no puede especificar nombres para que lsof los localice a menos que sean nombres de sistemas de archivos. Esto se debe a que lsof necesita conocer los números de dispositivo e inode de los archivos enumerados en las opciones de lsof, y la opción -b impide que lsof los obtenga. Además, dado que lsof solo tiene números de dispositivo para los sistemas de archivos que tienen alternativas, su capacidad para localizar archivos en los sistemas de archivos depende completamente de la disponibilidad y precisión de las alternativas. Si no hay alternativas disponibles, o si son incorrectas, lsof no podrá localizar archivos en los sistemas de archivos especificados.
Tercero, si los nombres de los directorios de tu sistema de archivos que lsof obtiene de la tabla de montaje de tu sistema son enlaces simbólicos, lsof no podrá resolver los enlaces. Esto se debe a que la opción -b impide que lsof utilice la función [readlink]({filename}../../readlink)(2) del kernel que utiliza para resolver los enlaces simbólicos.
Finalmente, el uso de la opción -b hace que lsof emita mensajes de advertencia cuando necesita utilizar las funciones del kernel que la opción -b le indica que evite. Puedes suprimir estos mensajes especificando la opción -w, pero si lo haces, no verás los números de dispositivo alternativos que se muestran en los mensajes de advertencia.
NÚMEROS DE DISPOSITIVO ALTERNATIVOS
En algunas versiones, cuando lsof tiene que interrumpir un bloque porque no puede obtener información sobre un sistema de archivos montado a través de las funciones del kernel lstat(2) y [stat]({filename}../../stat)(2), o porque has especificado la opción -b, lsof puede obtener parte de la información que necesita (el número de dispositivo y, posiblemente, el tipo de sistema de archivos) de la tabla de montaje del sistema. Cuando esto es posible, lsof informará del número de dispositivo que obtuvo. (Puedes suprimir este informe especificando la opción -w).
Puedes ayudar a este proceso si tu tabla de montaje se admite con un archivo /etc/mtab o /etc/mnttab que contenga un campo de opciones, añadiendo un campo dev=xxxx para los puntos de montaje que no tengan uno en sus cadenas de opciones. Nota: debes poder editar el archivo; es decir, algunas tablas de montaje, como el /etc/mnttab o el /proc/mounts reciente de Solaris o Linux, son de solo lectura y no se pueden modificar.
También es posible que puedas proporcionar números de dispositivo utilizando las opciones +m y +m m, siempre que sean compatibles con tu versión. Consulta la salida de las opciones -h o -? de lsof para ver si las opciones +m y +m m están disponibles.
La parte xxxx del campo es el valor hexadecimal del número de dispositivo del sistema de archivos. (Consulta el campo st_dev de la salida de las funciones lstat(2) y [stat]({filename}../../stat)(2) para obtener los valores apropiados para tus sistemas de archivos). Aquí hay un ejemplo de un archivo /etc/mnttab de Sun Solaris 2.6 para un sistema de archivos montado de forma remota a través de NFS:
nfs ignore,noquota,dev=2a40001
Hay una ventaja en tener entradas dev=xxxx en tu archivo de tabla de montaje, especialmente para los sistemas de archivos que se montan desde servidores NFS remotos. Cuando un servidor remoto se bloquea y quieres identificar a sus usuarios ejecutando lsof en uno de sus clientes, es probable que lsof no pueda obtener la salida de las funciones lstat(2) y [stat]({filename}../../stat)(2) para el sistema de archivos. Si puede obtener el número de dispositivo del sistema de archivos de la tabla de montaje, podrá mostrar los archivos abiertos en el servidor NFS bloqueado.
Algunas versiones que no utilizan un archivo /etc/mtab o /etc/mnttab ASCII para la tabla de montaje aún pueden proporcionar un número de dispositivo alternativo en sus tablas de montaje internas. Esto incluye AIX, Apple Darwin, FreeBSD, NetBSD, OpenBSD y Tru64 UNIX. Lsof sabe cómo obtener el número de dispositivo alternativo para estas versiones y lo utiliza cuando se impide su intento de realizar lstat(2) o [stat]({filename}../../stat)(2) en el sistema de archivos.
Si no está seguro de si su dialecto proporciona números de dispositivo alternativos para los sistemas de archivos desde su tabla de montaje, utilice esta invocación de lsof para ver si informa sobre algún número de dispositivo alternativo:
lsof -b
Busque mensajes de advertencia de error estándar que comiencen con ``asumiendo "dev=xxxx" desde ...''.
CACHÉ DE NOMBRES DEL NÚCLEO
Lsof puede examinar la caché de nombres del núcleo o utilizar otras funciones del núcleo (por ejemplo, la función ADVFS x tag_to_path() en Tru64 UNIX) en algunos dialectos para la mayoría de los tipos de sistemas de archivos, excluyendo AFS, y extraer los componentes de nombre de ruta utilizados recientemente de ella. (Las búsquedas de ruta del sistema de archivos AFS no utilizan la caché de nombres del núcleo; aparentemente, algunas operaciones del sistema de archivos Solaris VxFS tampoco la utilizan).
Lsof informa las rutas completas que encuentra en la columna NAME. Si lsof no puede informar todos los componentes de una ruta, informa en la columna NAME el nombre del sistema de archivos, seguido de un espacio, dos caracteres -, otro espacio y los nombres de los componentes que ha localizado, separados por el carácter /.
Cuando lsof se ejecuta en modo repetitivo, es decir, con la opción -r especificada, el grado en que puede informar los componentes de nombre de ruta para el mismo archivo puede variar de un ciclo a otro. Esto se debe a que otros procesos en ejecución pueden hacer que el núcleo elimine las entradas de su caché de nombres y las reemplace por otras.
El uso de la caché de nombres del núcleo por parte de lsof para identificar las rutas de los archivos puede llevarle a informar componentes incorrectos en algunas circunstancias. Esto puede ocurrir cuando la caché de nombres del núcleo utiliza el número de dispositivo y el número de nodo como clave (por ejemplo, SCO OpenServer) y una clave en un sistema de archivos que cambia rápidamente se reutiliza. Si el núcleo del dialecto UNIX no purga la entrada de la caché de nombres para un archivo cuando se elimina, lsof puede encontrar una referencia a la entrada incorrecta en la caché. El FAQ de lsof (La sección FAQ indica su ubicación) contiene más información sobre esta situación.
Lsof puede informar los componentes de nombre de ruta para estos dialectos:
FreeBSD
HP-UX
Linux
NetBSD
SCO OpenServer
SCO|Caldera UnixWare
Solaris
Tru64 UNIX
Lsof no puede informar los componentes de nombre de ruta para estos dialectos:
AIX
OpenBSD
Si desea saber por qué lsof no puede informar los componentes de nombre de ruta para algunos dialectos, consulte el FAQ de lsof (La sección FAQ indica su ubicación).
ARCHIVO DE CACHÉ DE DISPOSITIVOS
Examinar todos los miembros del árbol de nodos /dev (o /devices) con las funciones stat(2) puede consumir mucho tiempo. Además, la información que lsof necesita (número de dispositivo, número de inodo y ruta) rara vez cambia.
En consecuencia, lsof normalmente mantiene un archivo de texto ASCII de información de caché /dev (o /devices) (excepción: lsof basado en /proc en Linux, donde no es necesario). El administrador del sistema local que construye lsof puede controlar la forma en que se forma la ruta del archivo de caché de dispositivos, seleccionando entre estas opciones:
Ruta de la opción -D;
Ruta de una variable de entorno;
Ruta a nivel del sistema;
Ruta personal (la predeterminada);
Ruta personal, modificada por una variable de entorno.
Consulte la salida de las opciones de ayuda -h, -D? o -? para conocer el estado actual del soporte de caché de dispositivos. La salida de ayuda enumera la ruta predeterminada del archivo de caché de dispositivos en modo de lectura que está en vigor para la invocación actual de lsof. La salida de la opción -D? enumera las rutas de los archivos de caché de dispositivos de solo lectura y de escritura, los nombres de cualquier variable de entorno aplicable y el formato de la ruta del caché de dispositivos personal.
Lsof puede detectar que el archivo de caché de dispositivos actual ha sido modificado accidental o maliciosamente mediante comprobaciones de integridad, incluida la computación y verificación de una suma de redundancia cíclica (CRC) de dieciséis bits sobre el contenido del archivo. Cuando lsof detecta que algo no está bien con el archivo, emite una advertencia e intenta eliminar el archivo de caché actual y crear una nueva copia, pero solo en una ruta en la que el proceso pueda escribir legítimamente.
La ruta desde la que un proceso lsof puede intentar leer un archivo de caché de dispositivos puede no ser la misma que la ruta en la que puede escribir legítimamente. Por lo tanto, cuando lsof detecta que necesita actualizar el archivo de caché de dispositivos, puede elegir una ruta diferente para escribirlo, en lugar de la ruta desde la que leyó una versión incorrecta u obsoleta.
Si está disponible, la opción -Dr evitará la escritura de un nuevo archivo de caché de dispositivos. (Siempre está disponible cuando se especifica sin un argumento de nombre de ruta).
Cuando se agrega un nuevo dispositivo al sistema, es posible que sea necesario recrear el archivo de caché de dispositivos. Dado que lsof compara el mtime del archivo de caché de dispositivos con el mtime y el ctime del directorio /dev (o /devices), normalmente detecta que se ha agregado un nuevo dispositivo; en ese caso, lsof emite un mensaje de advertencia e intenta reconstruir el archivo de caché de dispositivos.
Cada vez que lsof escribe un archivo de caché de dispositivos, establece su propiedad en el UID real del proceso que se está ejecutando y sus modos de permiso en 0600, lo que restringe su lectura y escritura solo al propietario del archivo.
PERMISOS DE LSOF QUE A AFFECTAN EL ACCESO AL ARCHIVO DE CACHÉ DE DISPOSITIVOS
Dos permisos del ejecutable lsof afectan su capacidad para acceder a los archivos de caché de dispositivos. Los permisos son establecidos por el administrador del sistema local cuando se instala lsof.
El primer y más raro permiso es setuid-root. Entra en vigor cuando se ejecuta lsof; su UID efectivo es entonces root, mientras que su UID real (es decir, el del usuario que ha iniciado sesión) no lo es. La distribución de lsof recomienda que las versiones para estos dialectos se ejecuten como setuid-root.
HP-UX 11.11 y 11.23
Linux
El segundo y más común permiso es setgid. Entra en vigor cuando el ID de grupo efectivo (GID) del proceso lsof se establece en uno que puede acceder a los dispositivos de memoria del kernel, por ejemplo, kmem'',sys'' o ``system''.
Un proceso de lsof que tiene permiso setgid normalmente renuncia a este permiso después de haber accedido a los dispositivos de memoria del kernel. Cuando lo hace, lsof puede permitir formaciones de ruta de caché de dispositivos más liberales. La distribución de lsof recomienda que las versiones para estos dialectos se ejecuten con permiso setgid y se les permita renunciar a este permiso.
AIX 5.[12] y 5.3-ML1
Apple Darwin 7.x Power Macintosh systems
FreeBSD 4.x, 4.1x, 5.x y [6789].x para sistemas basados en x86
FreeBSD 5.x, [6789].x y 1[012].8 para sistemas basados en Alpha, AMD64 y Sparc64
HP-UX 11.00
NetBSD 1.[456], 2.x y 3.x para sistemas basados en Alpha, x86 y SPARC
OpenBSD 2.[89] y 3.[0-9] para sistemas basados en x86
SCO OpenServer Release 5.0.6 para sistemas basados en x86
SCO|Caldera UnixWare 7.1.4 para sistemas basados en x86
Solaris 2.6, 8, 9 y 10
Tru64 UNIX 5.1
(Nota: lsof para AIX 5L y versiones posteriores necesita permiso setuid-root si se utiliza su opción -X).
Lsof para estos dialectos no admite un archivo de caché de dispositivos, por lo que los permisos otorgados al ejecutable no se aplican al archivo de caché de dispositivos.
Linux
RUTA DEL ARCHIVO DE CACHÉ DE DISPOSITIVOS DE LA OPCIÓN -D
La opción -D proporciona medios limitados para especificar la ruta del archivo de caché de dispositivos. Su función ? informará de las rutas de archivo de caché de dispositivos de solo lectura y de lectura/escritura que utilizará lsof.
Cuando las funciones -D b, r y u están disponibles, puede utilizarlas para solicitar que el archivo de caché se cree en una ubicación específica (b[ruta]); que se lea pero no se vuelva a crear (r[ruta]); o que se lea y se vuelva a crear (u[ruta]). Las funciones b, r y u están restringidas en determinadas condiciones. Están restringidas cuando el proceso de lsof se ejecuta con permiso setuid-root. La ruta especificada con la función r siempre es de solo lectura, incluso cuando está disponible.
Las funciones b, r y u también están restringidas cuando el proceso de lsof se ejecuta con permiso setgid y lsof no renuncia a este permiso. (Consulte la sección PERMISOS DE LSOF QUE A AFEECTAN AL ACCESO AL ARCHIVO DE CACHÉ DE DISPOSITIVOS para obtener una lista de las implementaciones que normalmente no renuncian a su permiso setgid).
Una función -D adicional, i (para ignorar), siempre está disponible.
Cuando está disponible, la función b indica a lsof que lea la información del dispositivo del kernel con la función stat(2) y cree un archivo de caché de dispositivos en la ruta indicada.
Cuando está disponible, la función r indica a lsof que lea el archivo de caché de dispositivos, pero que no lo actualice. Cuando una ruta de argumento acompaña a -Dr, indica la ruta del archivo de caché de dispositivos. La función r siempre está disponible cuando se especifica sin una ruta de argumento. Si lsof no se está ejecutando con permiso setuid-root y renuncia a su permiso setgid, una ruta de argumento puede acompañar a la función r.
Cuando está disponible, la función u indica a lsof que intente leer y utilizar el archivo de caché de dispositivos. Si no puede leer el archivo, o si encuentra que el contenido del archivo es incorrecto u obsoleto, leerá la información del kernel e intentará escribir una versión actualizada del archivo de caché de dispositivos, pero solo a una ruta que considere legítima para los UID reales y efectivos del proceso lsof.
RUTA DEL CACHÉ DE DISPOSITIVOS DESDE UNA VARIABLE DE ENTORNO
La segunda opción de lsof para el archivo de caché de dispositivos es el contenido de la variable de entorno LSOFDEVCACHE. Evita esta opción si el proceso de lsof se ejecuta como setuid-root, o si el UID real del proceso es root.
Se aplica una restricción adicional a la ruta del archivo de caché de dispositivos que se obtiene de la variable de entorno LSOFDEVCACHE: lsof no escribirá un archivo de caché de dispositivos en la ruta si el proceso de lsof no renuncia a su permiso setgid. (Consulte la sección PERMISOS DE LSOF QUE AFECTAN EL ACCESO AL ARCHIVO DE CACHÉ DE DISPOSITIVOS para obtener información sobre las implementaciones que no renuncian a su permiso setgid).
El administrador del sistema local puede desactivar el uso de la variable de entorno LSOFDEVCACHE o cambiar su nombre al compilar lsof. Consulte la salida de -D? para conocer el nombre de la variable de entorno.
RUTA DEL CACHÉ DE DISPOSITIVOS A NIVEL DE SISTEMA
El administrador del sistema local puede optar por tener un archivo de caché de dispositivos a nivel de sistema cuando se compila lsof. Ese archivo generalmente se construye mediante un procedimiento especial de administración del sistema cuando se inicia el sistema o cuando cambian los contenidos de /dev o /devices. Si se define, es la tercera ruta del archivo de caché de dispositivos que utiliza lsof.
Puede determinar si hay un archivo de caché de dispositivos a nivel de sistema en efecto para su instalación local examinando la salida de la opción de ayuda de lsof, es decir, la salida de la opción -h o -?.
Lsof nunca escribirá en la ruta del archivo de caché de dispositivos a nivel de sistema de forma predeterminada. Debe especificarse explícitamente con una función -D en un procedimiento de propiedad de root. Una vez que se ha escrito el archivo, el procedimiento debe cambiar sus modos de permiso a 0644 (lectura y escritura para el propietario, lectura para el grupo y lectura para otros).
RUTA DEL CACHÉ DE DISPOSITIVOS PERSONAL (PREDETERMINADA)
La ruta predeterminada del archivo de caché de dispositivos de la distribución de lsof es una que se registra en el directorio de inicio del UID real que ejecuta lsof. Se agrega un segundo componente de ruta al directorio de inicio con el formato .lsof_hostname.
Esta es la cuarta opción de ruta del archivo de caché de dispositivos de lsof y, por lo general, es la predeterminada. Si se definió una ruta del archivo de caché de dispositivos a nivel de sistema cuando se compiló lsof, esta cuarta opción se aplicará cuando lsof no pueda encontrar el archivo de caché de dispositivos a nivel de sistema. Esta es la única vez que lsof utiliza dos rutas al leer el archivo de caché de dispositivos.
La parte del nombre de host del segundo componente es el nombre base del host que se está ejecutando, según lo devuelto por gethostname(2). El nombre base se define como los caracteres que preceden al primer .' en la salida de gethostname(2), o toda la salida de gethostname(2) si no contiene ningún.`.
El archivo de caché de dispositivos pertenece al ID de usuario y solo el ID de usuario puede leerlo y escribir en él, es decir, sus modos son 0600. Cada ID de usuario real diferente en un host determinado que ejecuta lsof tiene un archivo de caché de dispositivos diferente. La parte del nombre de host de la ruta distingue los archivos de caché de dispositivos en un directorio de inicio montado en NFS en el que se escriben los archivos de caché de dispositivos desde varios hosts diferentes.
La ruta del archivo de caché de dispositivos personales formada por este método representa un archivo de caché de dispositivos que lsof intentará leer e intentará escribir si no existe o si su contenido es incorrecto o está desactualizado.
La opción -Dr sin un argumento de nombre de ruta inhibirá la escritura de un nuevo archivo de caché de dispositivos.
La opción -D? mostrará la especificación de formato para construir el archivo de caché de dispositivos personales. Las conversiones utilizadas en la especificación de formato se describen en el archivo 00DCACHE de la distribución de lsof.
RUTA MODIFICADA DEL ARCHIVO DE CACHÉ DE DISPOSITIVOS PERSONALES
Si esta opción está definida por el administrador del sistema local cuando se construye lsof, el contenido de la variable de entorno LSOFPERSDCPATH se puede utilizar para agregar un componente de la ruta del archivo de caché de dispositivos personales.
El contenido de la variable LSOFPERSDCPATH se inserta en la ruta en el lugar marcado por el administrador del sistema local con la conversión ``%p'' en la especificación de formato HASPERSDC del archivo de encabezado machine.h del dialecto. (Se coloca inmediatamente después del directorio de inicio en la distribución predeterminada de lsof).
Por ejemplo, si LSOFPERSDCPATH contiene LSOF'', el directorio de inicio es/Homes/abe'', el nombre del host es lsof.itap.purdue.edu'' y el formato HASPERSDC es el predeterminado (%h/%p.lsof_%L''), la ruta modificada del archivo de caché de dispositivos personales es:
/Homes/abe/LSOF/.lsof_vic
La variable de entorno LSOFPERSDCPATH se ignora cuando el proceso de lsof se establece como setuid-root o cuando el UID real del proceso es root.
Lsof no escribirá en una ruta modificada del archivo de caché de dispositivos personales si el proceso de lsof no renuncia al permiso setgid. (Consulte la sección LSOF PERMISSIONS THAT AFFECT DEVICE CACHE FILE ACCESS para obtener una lista de las implementaciones que normalmente no renuncian a su permiso setgid).
Si, por ejemplo, desea crear un subdirectorio de rutas de archivos de caché de dispositivos personales utilizando la variable de entorno LSOFPERSDCPATH para nombrarlo, y lsof no renuncia a su permiso setgid, tendrá que permitir que lsof cree archivos de caché de dispositivos en la ruta personal estándar y muévalos a su subdirectorio con comandos de shell.
El administrador del sistema local puede: deshabilitar esta opción cuando se construye lsof; cambiar el nombre de la variable de entorno de LSOFPERSDCPATH a otro nombre; cambiar el formato HASPERSDC para incluir el componente de ruta personal en otro lugar; o excluir el componente de ruta personal por completo. Consulte la salida de la opción -D? para obtener el nombre de la variable de entorno y la especificación de formato HASPERSDC.
DIAGNÓSTICOS
Los errores se identifican con mensajes en el archivo de error estándar.
Lsof devuelve un uno (1) si se detectó algún error, incluido el fallo al localizar nombres de comandos, nombres de archivos, direcciones de Internet o archivos, nombres de inicio de sesión, archivos NFS, PID, PGID o UID que se solicitó listar. Si se especifica la opción -V, lsof indicará los elementos de búsqueda que no pudo listar. Si se especifica la opción -Q, lsof ignorará cualquier error en los elementos de búsqueda y solo devolverá un error si ocurre algo inusual e irrecuperable.
Devuelve un cero (0) si no se detectaron errores y si se especificó la opción -Q o si pudo listar información sobre todos los argumentos de búsqueda especificados.
Cuando lsof no puede abrir el acceso a /dev (o /devices) o a uno de sus subdirectorios, o obtener información sobre un archivo en ellos con stat(2), emite un mensaje de advertencia y continúa. Que lsof emitirá mensajes de advertencia sobre archivos inaccesibles en /dev (o /devices) se indica en su salida de ayuda, solicitada con las opciones -h o >B -?, con el mensaje:
Las advertencias de /dev inaccesible están habilitadas.
El mensaje de advertencia se puede suprimir con la opción -w. También puede haber sido suprimido por el administrador del sistema cuando se compiló lsof mediante la configuración de la definición WARNDEVACCESS. En este caso, la salida de las opciones de ayuda incluirá el mensaje:
Las advertencias de /dev inaccesible están deshabilitadas.
Los mensajes de advertencia del dispositivo inaccesible generalmente desaparecen después de que lsof ha creado un archivo de caché de dispositivos en funcionamiento.
EJEMPLOS
Para obtener un conjunto más completo de ejemplos, documentados más detalladamente, consulte el archivo 00QUICKSTART de la distribución de lsof.
Para listar todos los archivos abiertos, use:
lsof
Para listar todos los archivos abiertos de Internet, x.25 (HP-UX) y UNIX domain, use:
lsof -i -U
Para listar todos los archivos de red IPv4 abiertos utilizados por el proceso cuyo PID es 1234, use:
lsof -i 4 -a -p 1234
Si está bien que el PID 1234 no exista, o que el PID 1234 no tenga archivos de red IPv4 abiertos, agregue -Q:
lsof -Q -i 4 -a -p 1234
Suponiendo que el dialecto UNIX admite IPv6, para listar solo los archivos de red IPv6 abiertos, use:
lsof -i 6
Para listar todos los archivos que utilizan cualquier protocolo en los puertos 513, 514 o 515 del host wonderland.cc.purdue.edu, use:
lsof -i @wonderland.cc.purdue.edu:513-515
Para listar todos los archivos que utilizan cualquier protocolo en cualquier puerto de mace.cc.purdue.edu (cc.purdue.edu es el dominio predeterminado), use:
lsof -i @mace
Para listar todos los archivos abiertos para el nombre de inicio de sesión ``abe'', o el ID de usuario 1234, o el proceso 456, o el proceso 123, o el proceso 789, use:
lsof -p 456,123,789 -u 1234,abe
Para listar todos los archivos abiertos en el dispositivo /dev/hd4, use:
lsof /dev/hd4
Para encontrar el proceso que tiene /u/abe/foo abierto sin preocuparse de que no haya ninguno, use:
lsof -Q /u/abe/foo
Para realizar una acción solo si un proceso tiene /u/abe/foo abierto, use:
lsof /u/abe/foo echo "still in use"
Para enviar una señal SIGHUP a los procesos que tienen /u/abe/bar abierto, use:
kill -HUP `lsof -t /u/abe/bar`
Para encontrar cualquier archivo abierto, incluido un archivo de socket de dominio UNIX, con el nombre /dev/log, use:
lsof /dev/log
Para encontrar procesos con archivos abiertos en el sistema de archivos NFS llamado /nfs/mount/point cuyo servidor es inaccesible, y suponiendo que su tabla de montaje proporciona el número de dispositivo para /nfs/mount/point, use:
lsof -b /nfs/mount/point
Para realizar la búsqueda anterior suprimiendo los mensajes de advertencia, utilice:
lsof -bw /nfs/mount/point
Para ignorar el archivo de caché del dispositivo, utilice:
lsof -Di
Para obtener la salida del PID y el nombre del comando para cada proceso, el descriptor de archivo, el número de dispositivo de archivo y el número de inodo de archivo para cada archivo de cada proceso, utilice:
lsof -FpcfDi
Para listar los archivos en los descriptores 1 y 3 de cada proceso que se esté ejecutando el comando lsof para el ID de inicio de sesión ``abe'' cada 10 segundos, utilice:
lsof -c lsof -a -d 1 -d 3 -u abe -r10
Para listar el directorio de trabajo actual de los procesos que ejecutan un comando que tiene exactamente cuatro caracteres y una 'o' o 'O' en el tercer carácter, utilice esta forma de expresión regular de la opción -c:
lsof -c /^..o.$/i -a -d cwd
Para encontrar un archivo de socket de la versión IP 4 por su dirección numérica en formato de puntos asociada, utilice:
lsof [email protected]
Para encontrar un archivo de socket de la versión IP 6 (cuando el dialecto UNIX sea compatible con IPv6) por su dirección numérica en formato de dos puntos asociada, utilice:
lsof -i@[0:1:2:3:4:5:6:7]
Para encontrar un archivo de socket de la versión IP 6 (cuando el dialecto UNIX sea compatible con IPv6) por una dirección numérica en formato de dos puntos asociada que tenga una serie de ceros, por ejemplo, la dirección de bucle invertido, utilice:
lsof -i@[::1]
Para obtener un marcador de línea en modo de repetición que contenga la hora actual, utilice:
lsof -rm====%T====
Para agregar espacios a la línea de marcador anterior, utilice:
lsof -r "m==== %T ===="
ERRORES
Dado que lsof lee la memoria del kernel en su búsqueda de archivos abiertos, los cambios rápidos en la memoria del kernel pueden producir resultados impredecibles.
Cuando un archivo tiene múltiples bloqueos de registro, el carácter de estado de bloqueo (después del descriptor de archivo) se deriva de una prueba de la primera estructura de bloqueo, no de cualquier combinación de las estructuras de bloqueo individuales que puedan ser descritas por múltiples estructuras de bloqueo.
Lsof no puede buscar archivos con permisos de acceso restrictivos por nombre a menos que se instale con el permiso de set-UID de root. De lo contrario, se limita a buscar archivos a los que su usuario o su grupo de GID establecido (si existe) tengan permiso de acceso.
La visualización de la dirección de destino de un socket sin procesar (por ejemplo, para ping) depende del sistema operativo UNIX. Algunos dialectos almacenan la dirección de destino en el bloque de control de protocolo del socket sin procesar, otros no.
Lsof no siempre puede representar los números de dispositivo de Solaris de la misma manera que ls(1). Por ejemplo, los números de dispositivo principal y secundario que las funciones lstat(2) y stat(2) informan para el directorio en el que se montan los archivos de CD-ROM (típicamente /cdrom) no son los mismos que los que informa para el dispositivo en el que se montan los archivos de CD-ROM (típicamente /dev/sr0). (Lsof informa los números de directorio).
El soporte para los sistemas de archivos /proc solo está disponible para los dialectos BSD y Tru64 UNIX, Linux y dialectos derivados de SYSV R4, como FreeBSD, NetBSD, OpenBSD y Solaris.
Algunos elementos de archivo /proc (número de dispositivo, número de inodo y tamaño de archivo) no están disponibles en algunos dialectos. La búsqueda de archivos en un sistema de archivos /proc puede requerir que se especifique el nombre de ruta completo.
No se muestran descriptores de archivos (txt) para los procesos de Linux. Todas las entradas para archivos distintos del directorio de trabajo actual, el directorio raíz y los descriptores de archivos numéricos se etiquetan como descriptores de memoria (mem).
Lsof no puede buscar tuberías con nombre de Tru64 UNIX por nombre, porque su implementación del kernel de lstat(2) devuelve un número de dispositivo incorrecto para una tubería con nombre.
Lsof no puede informar de forma completa o correcta sobre los bloqueos en HP-UX 9.01, 10.20 y 11.00 debido a un acceso insuficiente a los datos del kernel o errores en los datos del kernel. Consulte las preguntas frecuentes de lsof (la sección de preguntas frecuentes indica su ubicación) para obtener más detalles.
El tipo de archivo SMT de AIX es una invención. Se crea para estructuras de archivos cuyo tipo (15) no está definido en el archivo de encabezado /usr/include/sys/file.h de AIX. Una forma de crear dichas estructuras de archivos es ejecutar clientes X con la variable DISPLAY establecida en ":0.0".
La opción +|-f[cfn] no es compatible con lsof basado en /proc en Linux, porque no lee las estructuras del kernel desde la memoria del kernel.
ENTORNO
Lsof puede acceder a estas variables de entorno.
LANG define una configuración regional de idioma. Consulte setlocale(3) para conocer los nombres de otras variables que se pueden utilizar en lugar de LANG; por ejemplo, LC_ALL, LC_TYPE, etc.
LSOFDEVCACHE define la ruta a un archivo de caché de dispositivos. Consulte la sección RUTA DE LA CACHÉ DE DISPOSITIVOS DESDE UNA VARIABLE DE ENTORNO para obtener más información.
LSOFPERSDCPATH define el componente central de una ruta de archivo de caché de dispositivos personal modificada. Consulte la sección RUTA DE LA CACHÉ DE DISPOSITIVOS PERSONAL MODIFICADA para obtener más información.
PREGUNTAS FRECUENTES
Las preguntas y respuestas más frecuentes (FAQ) están disponibles en el archivo 00FAQ de la distribución de lsof.
La última versión del archivo se encuentra en:
https://github.com/lsof-org/lsof/blob/master/00FAQ
ARCHIVOS
/dev/kmem dispositivo de memoria virtual del kernel
/dev/mem dispositivo de memoria física
/dev/swap dispositivo de paginación del sistema
.lsof_hostname archivo de caché de dispositivos de lsof (el sufijo, nombre de host, es el primer componente del nombre del host devuelto por gethostname(2).)
AUTORES
Lsof fue escrito por Victor A. Abell <_> de la Universidad de Purdue. Desde la versión 4.93.0, el equipo lsof-org en GitHub mantiene lsof. Muchos otros han contribuido a lsof. Se enumeran en el archivo 00CREDITS de la distribución de lsof.
DISTRIBUCIÓN
La última distribución de lsof está disponible en
https://github.com/lsof-org/lsof/releases
VÉASE TAMBIÉN
Es posible que no todas las páginas de manual siguientes existan en cada dialecto UNIX a la que se ha portado lsof.
access(2), awk(1), crash(1), fattach(3C), ff(1), fstat(8), fuser(1), gethostname(2), isprint(3), kill(1), localtime(3), lstat(2), modload(8), mount(8), netstat(1), ofiles(8L), open(2), perl(1), ps(1), readlink(2), setlocale(3), stat(2), strftime(3), time(2), uname(1).