Capítulo 36. Herramientas de vigilancia del sistema

Tabla de contenidos

36.1. Listado de los archivos abiertos: lsof
36.2. Usuario que accede a los archivos: fuser
36.3. Propiedades de un archivo: stat
36.4. Dispositivos USB: lsusb
36.5. Información sobre un dispositivo SCSI: scsiinfo
36.6. Mostrar procesos: top
36.7. Mostrar lista de procesos: ps
36.8. Mostrar el árbol de procesos: pstree
36.9. Mostrar quién hace qué: w
36.10. Mostrar el consumo de memoria: free
36.11. Kernel Ring Buffer: dmesg
36.12. Sistemas de archivos: mount, df y du
36.13. El sistema de archivos /proc
36.14. vmstat, iostat y mpstat
36.15. procinfo
36.16. Recursos PCI: lspci
36.17. Llamadas al sistema: strace
36.18. Llamadas a librerías: ltrace
36.19. Librerías necesarias: ldd
36.20. Información adicional sobre archivos binarios ELF
36.21. Comunicación entre procesos: ipcs
36.22. Medida del tiempo con time

Resumen

En este capítulo se presentan distintos comandos y procedimientos mediante los cuales puede analizarse el estado del sistema. Además se describen varias herramientas junto con sus opciones más importantes que pueden resultar de utilidad en el trabajo diario.

Cada vez que se comenta un comando, se incluye su correspondiente salida en pantalla. La primera línea corresponde al comando en sí (ubicado tras el carácter que representa la línea de comandos, en este caso el signo del dólar). Los fragmentos omitidos se indican mediante corchetes ([...]) y, si es necesario, se dividen las líneas demasiado extensas. Esta división se simboliza mediante una barra inversa (\):

$ 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

Asimismo, se adjunta una descripción concisa de cada comando en la que se incluye un resumen de todas sus funciones. Puede encontrar información más detallada acerca de los comandos en las páginas del manual correspondientes. La mayoría de comandos admite también el parámetro --help, mediante el cual podrá visualizar una lista de todas las opciones posibles.

36.1. Listado de los archivos abiertos: lsof

Si desea visualizar el listado de todos los archivos que mantiene abiertos un determinado ID de proceso (PID), puede utilizar la opción -p. Por ejemplo, para mostrar todos los archivos utilizados por la shell actual, ejecute:


$ 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

En el ejemplo se ha utilizado la variable $$, cuyo valor es el ID de proceso de la shell.

Si no se indica ninguna opción, lsof enumera todos los archivos abiertos en ese momento. Puesto que no es raro que haya miles de archivos abiertos, una lista de todos ellos no suele resultar de utilidad. No obstante, es posible combinar la lista de todos los archivos con funciones de búsqueda para generar listas útiles, como por ejemplo un listado de todos los dispositivos de caracteres (character devices) 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

SUSE LINUX Manual de administración 9.3