Introducción
Cada sistema informático se beneficia de una administración y monitoreo adecuados. Vigilar cómo funciona su sistema le ayudará a descubrir problemas y resolverlos rápidamente.
Existen muchas utilidades de línea de comandos creadas con este propósito. Esta guía le presentará algunas de las aplicaciones más útiles para tener en su caja de herramientas.
Requisitos previos
Para seguir esta guía, necesitará acceso a una computadora con un sistema operativo basado en Linux. Esto puede ser un servidor privado virtual al que se haya conectado con SSH o su máquina local. Tenga en cuenta que este tutorial se validó utilizando un servidor Linux con Ubuntu 20.04, pero los ejemplos dados deberían funcionar en una computadora con cualquier versión de cualquier distribución de Linux.
Si planea usar un servidor remoto para seguir esta guía, le recomendamos que primero complete nuestra Guía de Configuración Inicial del Servidor. Al hacerlo, configurará un entorno de servidor seguro, que incluye un usuario no root con privilegios sudo
y un firewall configurado con UFW, que puede usar para mejorar sus habilidades en Linux.
Paso 1 – Cómo ver los procesos en ejecución en Linux
Puedes ver todos los procesos en ejecución en tu servidor usando el comando top
:
Outputtop - 15:14:40 up 46 min, 1 user, load average: 0.00, 0.01, 0.05
Tasks: 56 total, 1 running, 55 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 1019600k total, 316576k used, 703024k free, 7652k buffers
Swap: 0k total, 0k used, 0k free, 258976k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 24188 2120 1300 S 0.0 0.2 0:00.56 init
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:00.07 ksoftirqd/0
6 root RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
7 root RT 0 0 0 0 S 0.0 0.0 0:00.03 watchdog/0
8 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 cpuset
9 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 khelper
10 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kdevtmpfs
Las primeras líneas de salida proporcionan estadísticas del sistema, como la carga de CPU/memoria y el número total de tareas en ejecución.
Puedes ver que hay 1 proceso en ejecución y 55 procesos que se consideran durmientes porque no están utilizando activamente ciclos de CPU.
El resto de la salida mostrada muestra los procesos en ejecución y sus estadísticas de uso. Por defecto, top
ordena automáticamente estos por uso de CPU, para que puedas ver los procesos más ocupados primero. top
seguirá ejecutándose en tu terminal hasta que lo detengas usando la combinación estándar de teclas Ctrl+C
para salir de un proceso en ejecución. Esto envía una señal de kill
, instruyendo al proceso a detenerse graciosamente si es capaz.
Una versión mejorada de top
, llamada htop
, está disponible en la mayoría de los repositorios de paquetes. En Ubuntu 20.04, puedes instalarlo con apt
:
Después de eso, el comando htop
estará disponible:
Output Mem[||||||||||| 49/995MB] Load average: 0.00 0.03 0.05
CPU[ 0.0%] Tasks: 21, 3 thr; 1 running
Swp[ 0/0MB] Uptime: 00:58:11
PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command
1259 root 20 0 25660 1880 1368 R 0.0 0.2 0:00.06 htop
1 root 20 0 24188 2120 1300 S 0.0 0.2 0:00.56 /sbin/init
311 root 20 0 17224 636 440 S 0.0 0.1 0:00.07 upstart-udev-brid
314 root 20 0 21592 1280 760 S 0.0 0.1 0:00.06 /sbin/udevd --dae
389 messagebu 20 0 23808 688 444 S 0.0 0.1 0:00.01 dbus-daemon --sys
407 syslog 20 0 243M 1404 1080 S 0.0 0.1 0:00.02 rsyslogd -c5
408 syslog 20 0 243M 1404 1080 S 0.0 0.1 0:00.00 rsyslogd -c5
409 syslog 20 0 243M 1404 1080 S 0.0 0.1 0:00.00 rsyslogd -c5
406 syslog 20 0 243M 1404 1080 S 0.0 0.1 0:00.04 rsyslogd -c5
553 root 20 0 15180 400 204 S 0.0 0.0 0:00.01 upstart-socket-br
htop
proporciona una mejor visualización de múltiples hilos de CPU, una mejor conciencia del soporte de color en terminales modernos y más opciones de clasificación, entre otras características. A diferencia de top
, no siempre está instalado por defecto, pero puede considerarse un reemplazo directo. Puedes salir de htop
presionando Ctrl+C
al igual que con top
.
Aquí hay algunos atajos de teclado que te ayudarán a usar htop de manera más efectiva:
- M: Sort processes by memory usage
- P: Sort processes by processor usage
- ?: Acceder a la ayuda
- k: Kill current/tagged process
- F2: Configurar htop. Puedes elegir opciones de visualización aquí.
- /: Buscar procesos
Existen muchas otras opciones a las que puedes acceder a través de la ayuda o la configuración. Estos deberían ser tus primeros pasos para explorar la funcionalidad de htop. En el siguiente paso, aprenderás cómo monitorear el ancho de banda de tu red.
Paso 2: Cómo Monitorear el Ancho de Banda de tu Red
Si tu conexión de red parece estar sobrecargada y no estás seguro de qué aplicación es la culpable, un programa llamado nethogs
es una buena opción para averiguarlo.
En Ubuntu, puedes instalar nethogs con el siguiente comando:
Después de eso, el comando nethogs
estará disponible:
OutputNetHogs version 0.8.0
PID USER PROGRAM DEV SENT RECEIVED
3379 root /usr/sbin/sshd eth0 0.485 0.182 KB/sec
820 root sshd: root@pts/0 eth0 0.427 0.052 KB/sec
? root unknown TCP 0.000 0.000 KB/sec
TOTAL 0.912 0.233 KB/sec
nethogs
asocia cada aplicación con su tráfico de red.
Solo hay algunos comandos que puedes usar para controlar nethogs
:
- M: Change displays between “kb/s”, “kb”, “b”, and “mb”.
- R: Sort by traffic received.
- S: Sort by traffic sent.
- Q: quit
iptraf-ng
es otra forma de monitorear el tráfico de red. Proporciona varios interfaces de monitoreo interactivos diferentes.
Nota: IPTraf requiere un tamaño de pantalla de al menos 80 columnas por 24 líneas.
En Ubuntu, puedes instalar iptraf-ng
con el siguiente comando:
iptraf-ng
necesita ejecutarse con privilegios de root, así que debes precederlo con sudo
:
Se te presentará un menú que utiliza un popular framework de interfaz de línea de comandos llamado ncurses
.
Con este menú, puedes seleccionar qué interfaz te gustaría acceder.
Por ejemplo, para obtener una visión general de todo el tráfico de red, puedes seleccionar el primer menú y luego “Todas las interfaces”. Te dará una pantalla que se ve así:
Aquí, puedes ver en qué direcciones IP estás comunicando en todas tus interfaces de red.
Si deseas que esas direcciones IP se resuelvan en dominios, puedes habilitar la búsqueda inversa de DNS saliendo de la pantalla de tráfico, seleccionando Configurar
y luego activando Búsqueda inversa de DNS
.
También puedes habilitar Nombres de servicios TCP/UDP
para ver los nombres de los servicios que se ejecutan en lugar de los números de puerto.
Con ambas opciones habilitadas, la visualización puede verse así:
El comando netstat
es otra herramienta versátil para recopilar información de red.
netstat
se instala por defecto en la mayoría de los sistemas modernos, pero puedes instalarlo tú mismo descargándolo de los repositorios de paquetes predeterminados de tu servidor. En la mayoría de los sistemas Linux, incluyendo Ubuntu, el paquete que contiene netstat
es net-tools
:
Por defecto, el comando netstat
por sí solo imprime una lista de sockets abiertos:
OutputActive Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 192.241.187.204:ssh ip223.hichina.com:50324 ESTABLISHED
tcp 0 0 192.241.187.204:ssh rrcs-72-43-115-18:50615 ESTABLISHED
Active UNIX domain sockets (w/o servers)
Proto RefCnt Flags Type State I-Node Path
unix 5 [ ] DGRAM 6559 /dev/log
unix 3 [ ] STREAM CONNECTED 9386
unix 3 [ ] STREAM CONNECTED 9385
. . .
Si agregas la opción -a
, listará todos los puertos, tanto los que están escuchando como los que no:
OutputActive Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 *:ssh *:* LISTEN
tcp 0 0 192.241.187.204:ssh rrcs-72-43-115-18:50615 ESTABLISHED
tcp6 0 0 [::]:ssh [::]:* LISTEN
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags Type State I-Node Path
unix 2 [ ACC ] STREAM LISTENING 6195 @/com/ubuntu/upstart
unix 2 [ ACC ] STREAM LISTENING 7762 /var/run/acpid.socket
unix 2 [ ACC ] STREAM LISTENING 6503 /var/run/dbus/system_bus_socket
. . .
Si deseas filtrar para ver solo conexiones TCP o UDP, utiliza las banderas -t
o -u
respectivamente:
OutputActive Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 *:ssh *:* LISTEN
tcp 0 0 192.241.187.204:ssh rrcs-72-43-115-18:50615 ESTABLISHED
tcp6 0 0 [::]:ssh [::]:* LISTEN
Ve estadísticas pasando la bandera “-s”:
OutputIp:
13500 total packets received
0 forwarded
0 incoming packets discarded
13500 incoming packets delivered
3078 requests sent out
16 dropped because of missing route
Icmp:
41 ICMP messages received
0 input ICMP message failed.
ICMP input histogram:
echo requests: 1
echo replies: 40
. . .
Si deseas actualizar continuamente la salida, puedes usar la bandera -c
. Hay muchas otras opciones disponibles para netstat que puedes aprender revisando su manual de página.
En el siguiente paso, aprenderás algunas formas útiles de monitorear el uso de tu disco.
Paso 3 – Cómo Monitorear el Uso de tu Disco
Para obtener una rápida visión general de cuánto espacio queda en tus unidades conectadas, puedes usar el programa df
.
Sin ninguna opción, su salida se ve así:
OutputFilesystem 1K-blocks Used Available Use% Mounted on
/dev/vda 31383196 1228936 28581396 5% /
udev 505152 4 505148 1% /dev
tmpfs 203920 204 203716 1% /run
none 5120 0 5120 0% /run/lock
none 509800 0 509800 0% /run/shm
Esto muestra el uso del disco en bytes, lo cual puede ser un poco difícil de leer.
Para solucionar este problema, puedes especificar la salida en un formato legible para humanos:
OutputFilesystem Size Used Avail Use% Mounted on
/dev/vda 30G 1.2G 28G 5% /
udev 494M 4.0K 494M 1% /dev
tmpfs 200M 204K 199M 1% /run
none 5.0M 0 5.0M 0% /run/lock
none 498M 0 498M 0% /run/shm
Si desea ver el espacio total disponible en todos los sistemas de archivos, puede pasar la opción --total
. Esto agregará una fila en la parte inferior con información resumida:
OutputFilesystem Size Used Avail Use% Mounted on
/dev/vda 30G 1.2G 28G 5% /
udev 494M 4.0K 494M 1% /dev
tmpfs 200M 204K 199M 1% /run
none 5.0M 0 5.0M 0% /run/lock
none 498M 0 498M 0% /run/shm
total 32G 1.2G 29G 4%
df
puede proporcionar una visión general útil. Otro comando, du
, proporciona un desglose por directorio.
du
analizará el uso para el directorio actual y cualquier subdirectorio. La salida predeterminada de du
ejecutándose en un directorio de inicio casi vacío se ve así:
Output4 ./.cache
8 ./.ssh
28 .
Nuevamente, puede especificar una salida legible para humanos pasando -h
:
Output4.0K ./.cache
8.0K ./.ssh
28K .
Para ver tamaños de archivo así como directorios, escriba lo siguiente:
Output0 ./.cache/motd.legal-displayed
4 ./.cache
4 ./.ssh/authorized_keys
8 ./.ssh
4 ./.profile
4 ./.bashrc
4 ./.bash_history
28 .
Para un total en la parte inferior, puede agregar la opción -c
:
Output4 ./.cache
8 ./.ssh
28 .
28 total
Si solo está interesado en el total y no en los detalles, puede emitir:
Output28 .
También hay una interfaz ncurses
para du
, apropiadamente llamada ncdu
, que puede instalar:
Esto representará gráficamente el uso de su disco:
Output--- /root ----------------------------------------------------------------------
8.0KiB [##########] /.ssh
4.0KiB [##### ] /.cache
4.0KiB [##### ] .bashrc
4.0KiB [##### ] .profile
4.0KiB [##### ] .bash_history
Puede recorrer el sistema de archivos usando las flechas hacia arriba y hacia abajo y presionando Enter en cualquier entrada de directorio.
En la última sección, aprenderá cómo monitorear el uso de memoria.
Paso 4 – Cómo Monitorizar el Uso de Memoria
Puede verificar el uso de memoria actual en su sistema utilizando el comando free
.
Cuando se utiliza sin opciones, la salida se ve así:
Output total used free shared buff/cache available
Mem: 1004896 390988 123484 3124 490424 313744
Swap: 0 0 0
Para mostrar en un formato más legible, puedes pasar la opción -m
para mostrar la salida en megabytes:
Output total used free shared buff/cache available
Mem: 981 382 120 3 478 306
Swap: 0 0 0
La línea Mem
incluye la memoria utilizada para el almacenamiento en búfer y en caché, la cual se libera tan pronto como se necesita para otros fines. Swap
es la memoria que se ha escrito en un archivo de intercambio
en el disco para conservar la memoria activa.
Finalmente, el comando vmstat
puede producir varios datos sobre su sistema, incluyendo memoria, intercambio, E/S de disco e información de CPU.
Puedes usar el comando para obtener otra vista del uso de memoria:
Outputprocs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
1 0 0 99340 123712 248296 0 0 0 1 9 3 0 0 100 0
Puedes ver esto en megabytes especificando las unidades con la bandera -S
:
Outputprocs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
1 0 0 96 120 242 0 0 0 1 9 3 0 0 100 0
Para obtener algunas estadísticas generales sobre el uso de memoria, escribe:
Output 495 M total memory
398 M used memory
252 M active memory
119 M inactive memory
96 M free memory
120 M buffer memory
242 M swap cache
0 M total swap
0 M used swap
0 M free swap
. . .
Para obtener información sobre el uso de caché de procesos del sistema individual, escribe:
OutputCache Num Total Size Pages
ext4_groupinfo_4k 195 195 104 39
UDPLITEv6 0 0 768 10
UDPv6 10 10 768 10
tw_sock_TCPv6 0 0 256 16
TCPv6 11 11 1408 11
kcopyd_job 0 0 2344 13
dm_uevent 0 0 2464 13
bsg_cmd 0 0 288 14
. . .
Esto te dará detalles sobre qué tipo de información se almacena en la caché.
Conclusión
Usando estas herramientas, deberías comenzar a poder monitorear tu servidor desde la línea de comandos. Hay muchas otras utilidades de monitoreo que se utilizan para diferentes propósitos, pero estas son un buen punto de partida.
A continuación, es posible que desees aprender sobre la gestión de procesos en Linux utilizando ps, kill y nice.