Capítulo 25. Utilidades de monitorización del sistema

Tabla de contenidos

25.1. Lista de archivos abiertos: lsof
25.2. Usuarios que acceden a los archivos: fuser
25.3. Propiedades del archivo: stat
25.4. Dispositivos USB: lsusb
25.5. Información acerca de un dispositivo SCSI: scsiinfo
25.6. Procesos: top
25.7. Lista de procesos: ps
25.8. Árbol de procesos: pstree
25.9. Usuarios y acciones w
25.10. Utilización de la memoria: free
25.11. Buffer de anillo del núcleo: dmesg
25.12. Sistemas de archivos y su utilización: mount, df y du
25.13. Sistema de archivos /proc
25.14. vmstat, iostat y mpstat
25.15. procinfo
25.16. Recursos PCI: lspci
25.17. Llamadas del sistema para ejecutar un programa: strace
25.18. Llamadas de la biblioteca para ejecutar un programa: ltrace
25.19. Especificación de la biblioteca necesaria: ldd
25.20. Información adicional acerca de los binarios ELF
25.21. Comunicación entre procesos: ipcs
25.22. Medición del tiempo con time

Resumen

Se pueden utilizar varios programas y mecanismos, algunos de los cuales están representados aquí, para examinar el estado del sistema. También se describen algunas utilidades especialmente indicadas para las tareas habituales, junto con los parámetros más importantes.

Para cada uno de los comandos introducidos, se presentan ejemplos de las salidas relevantes. En estos ejemplos, la primera línea es el comando en sí mismo (después del indicador del signo de dólar). Los comandos se indican con corchetes ([...]) y las líneas largas se acortan cuando es necesario. Los saltos de línea para las líneas largas se indican con una barra invertida (\).

$ command -x -y
output line 1
output line 2
output line 3 is annoyingly long, so long that \
    we have to break it
output line 3
[...]
output line 98
output line 99

Se han hecho descripciones cortas para permitir que se mencionen tantas utilidades como sea posible. El resto de información de todos los comandos se puede encontrar en las páginas Man. La mayoría de comandos también admiten el parámetro --help, que produce una lista breve de posibles parámetros.

25.1. Lista de archivos abiertos: lsof

Para ver una lista de todos los archivos abiertos para el proceso con el ID de proceso PID, utilice -p. Por ejemplo, para ver todos los archivos utilizados por el shell actual, introduzca:

$ lsof -p $$
COMMAND  PID USER   FD   TYPE DEVICE    SIZE     NODE NAME
zsh     4694   jj  cwd    DIR   0,18     144 25487368 /suse/jj/t (totan:/real-home/jj)
zsh     4694   jj  rtd    DIR    3,2     608        2 /
zsh     4694   jj  txt    REG    3,2  441296    20414 /bin/zsh
zsh     4694   jj  mem    REG    3,2  104484    10882 /lib/ld-2.3.3.so
zsh     4694   jj  mem    REG    3,2   11648    20610 /usr/lib/zsh/4.2.0/zsh/rlimits.so
[...]
zsh     4694   jj  mem    REG    3,2   13647    10891 /lib/libdl.so.2
zsh     4694   jj  mem    REG    3,2   88036    10894 /lib/libnsl.so.1
zsh     4694   jj  mem    REG    3,2  316410   147725 /lib/libncurses.so.5.4
zsh     4694   jj  mem    REG    3,2  170563    10909 /lib/tls/libm.so.6
zsh     4694   jj  mem    REG    3,2 1349081    10908 /lib/tls/libc.so.6
zsh     4694   jj  mem    REG    3,2      56    12410 /usr/lib/locale/de_DE.utf8/LC_TELEPHONE
[...]
zsh     4694   jj  mem    REG    3,2      59    14393 /usr/lib/locale/en_US/LC_NUMERIC
zsh     4694   jj  mem    REG    3,2  178476    14565 /usr/lib/locale/en_US/LC_CTYPE
zsh     4694   jj  mem    REG    3,2   56444    20598 /usr/lib/zsh/4.2.0/zsh/computil.so
zsh     4694   jj    0u   CHR 136,48               50 /dev/pts/48
zsh     4694   jj    1u   CHR 136,48               50 /dev/pts/48
zsh     4694   jj    2u   CHR 136,48               50 /dev/pts/48
zsh     4694   jj   10u   CHR 136,48               50 /dev/pts/48

Se ha utilizado la variable del shell especial $$, cuyo valor es el ID de proceso del shell.

El comando lsof muestra todos los archivos abiertos actualmente si se utilizan sin ningún parámetro. Como suele haber miles de archivos abiertos, mostrarlos todos casi nunca es útil. Sin embargo, la lista de todos los archivos se puede combinar con las funciones de búsqueda para generar listas útiles. Por ejemplo, muestre todos los dispositivos de caracteres utilizados:

$ lsof | grep CHR
sshd       4685    root  mem    CHR    1,5             45833 /dev/zero
sshd       4685    root  mem    CHR    1,5             45833 /dev/zero
sshd       4693      jj  mem    CHR    1,5             45833 /dev/zero
sshd       4693      jj  mem    CHR    1,5             45833 /dev/zero
zsh        4694      jj    0u   CHR 136,48                50 /dev/pts/48
zsh        4694      jj    1u   CHR 136,48                50 /dev/pts/48
zsh        4694      jj    2u   CHR 136,48                50 /dev/pts/48
zsh        4694      jj   10u   CHR 136,48                50 /dev/pts/48
X          6476    root  mem    CHR    1,1             38042 /dev/mem
lsof      13478      jj    0u   CHR 136,48                50 /dev/pts/48
lsof      13478      jj    2u   CHR 136,48                50 /dev/pts/48
grep      13480      jj    1u   CHR 136,48                50 /dev/pts/48
grep      13480      jj    2u   CHR 136,48                50 /dev/pts/48