Introducción
Todo sistema informático se beneficia de una administración y supervisión adecuadas. Supervisar el funcionamiento de su sistema le ayudará a detectar problemas y resolverlos rápidamente.
Existen numerosas utilidades de línea de comandos diseñadas para este propósito. Esta guía le presentará algunas de las aplicaciones más útiles que puede tener en su caja de herramientas.
Prerrequisitos
Para seguir esta guía, necesitará acceder a un ordenador con sistema operativo Linux. Puede ser un servidor privado virtual al que se haya conectado por SSH o su equipo local. Tenga en cuenta que este tutorial se validó con un servidor Linux con Ubuntu 20.04, pero los ejemplos proporcionados deberían funcionar en cualquier ordenador con cualquier versió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 . Esto le permitirá configurar un entorno de servidor seguro, que incluye un usuario no root con sudo
privilegios y un firewall configurado con UFW, que puede usar para mejorar sus habilidades con Linux.
Paso 1: Cómo ver los procesos en ejecución en Linux
Puede ver todos los procesos que se ejecutan en su servidor usando el top
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 inactivos porque no están usando ciclos de CPU de forma activa.
El resto de la salida mostrada muestra los procesos en ejecución y sus estadísticas de uso. De forma predeterminada, top
se ordenan automáticamente por uso de CPU, para que pueda ver primero los procesos más activos. top
Continuará ejecutándose en su shell hasta que lo detenga usando la combinación de teclas estándar Ctrl+C
para salir de un proceso en ejecución. Esto envía una kill
señal que indica al proceso que se detenga correctamente si puede hacerlo.
Una versión mejorada de top
, llamada htop
, está disponible en la mayoría de los repositorios de paquetes. En Ubuntu 20.04, puedes instalarla con apt
:
sudo apt install htop
Después de esto, el htop
comando estará disponible:
htop
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, mayor comprensión de la compatibilidad de colores en terminales modernas y más opciones de ordenación, entre otras funciones. A diferencia de [Nombre top
del programa], no siempre se instala por defecto, pero puede considerarse un reemplazo directo. Puedes salir htop
pulsando [Nombre del programa] Ctrl+C
con [Nombre del programa top
].
A continuación se muestran algunos atajos de teclado que le ayudarán a utilizar htop de forma más efectiva:
- M : Ordenar procesos por uso de memoria
- P : Ordenar procesos por uso del procesador
- ? : Ayuda de acceso
- k : Matar el proceso actual/etiquetado
- F2 : Configurar htop. Aquí puede elegir las opciones de visualización.
- / :: Procesos de búsqueda
Hay muchas otras opciones a las que puede acceder mediante la ayuda o la configuración. Estas deberían ser sus primeras opciones para explorar las funciones de htop. A continuación, aprenderá a monitorizar el ancho de banda de su red.
Paso 2: Cómo monitorear el ancho de banda de su red
Si su conexión de red parece estar sobreutilizada y no está 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:
sudo apt install nethogs
Después de esto, el nethogs
comando estará disponible:
nethogs
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 unos pocos comandos que puedes usar para controlar nethogs
:
- M : Cambia las visualizaciones entre “kb/s”, “kb”, “b” y “mb”.
- R : Ordenar por tráfico recibido.
- S : Ordenar por tráfico enviado.
- Q : dejar de fumar
iptraf-ng
Es otra forma de monitorear el tráfico de red. Ofrece diversas interfaces de monitoreo interactivas.
Nota : IPTraf requiere un tamaño de pantalla de al menos 80 columnas por 24 líneas.
En Ubuntu, puedes instalarlo iptraf-ng
con el siguiente comando:
sudo apt install iptraf-ng
iptraf-ng
debe ejecutarse con privilegios de root, por lo que debe precederlo con sudo
:
sudo iptraf-ng
Se le presentará un menú que utiliza un marco de interfaz de línea de comandos popular llamado ncurses
.

Con este menú, puede seleccionar a qué interfaz desea acceder.
Por ejemplo, para obtener una visión general de todo el tráfico de red, puede seleccionar el primer menú y luego “Todas las interfaces”. Aparecerá una pantalla similar a esta:

Aquí puedes ver qué direcciones IP estás comunicando en todas tus interfaces de red.
Si desea que esas direcciones IP se resuelvan en dominios, puede habilitar la búsqueda DNS inversa saliendo de la pantalla de tráfico, seleccionando Configure
y luego activando Reverse DNS lookups
.
También puede habilitar TCP/UDP service names
la visualización de los nombres de los servicios que se están ejecutando en lugar de los números de puerto.
Con ambas opciones habilitadas, la pantalla podría verse así:

El netstat
comando es otra herramienta versátil para recopilar información de la red.
netstat
Se instala por defecto en la mayoría de los sistemas modernos, pero puede instalarlo usted mismo descargándolo de los repositorios de paquetes predeterminados de su servidor. En la mayoría de los sistemas Linux, incluido Ubuntu, el paquete que contiene netstat
es net-tools
:
sudo apt install net-tools
De forma predeterminada, el netstat
comando por sí solo imprime una lista de sockets abiertos:
netstat
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 agrega una -a
opción, enumerará todos los puertos, de escucha y de no escucha:
netstat -a
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 desea filtrar para ver solo las conexiones TCP o UDP, utilice los indicadores -t
o respectivamente:-u
netstat -at
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
Vea las estadísticas pasando la bandera “-s”:
netstat -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 desea actualizar la salida continuamente, puede usar la -c
bandera. Hay muchas otras opciones disponibles para netstat, que puede consultar en su página del manual .
En el siguiente paso, aprenderá algunas formas útiles de monitorear el uso del disco.
Paso 3: Cómo supervisar el uso del disco
Para obtener una descripción general rápida de cuánto espacio en disco queda en las unidades conectadas, puede utilizar el df
programa.
Sin ninguna opción, su salida se ve así:
df
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 que puede ser un poco difícil de leer.
Para solucionar este problema, puede especificar la salida en un formato legible para humanos:
df -h
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 en disco disponible en todos los sistemas de archivos, puede pasar la --total
opción. Esto agregará una fila al final con información resumida:
df -h --total
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
ofrece un desglose por directorio.
du
Analizará el uso del directorio actual y sus subdirectorios. El resultado predeterminado al du
ejecutarse en un directorio de inicio casi vacío es el siguiente:
du
Output4 ./.cache
8 ./.ssh
28 .
Una vez más, puedes especificar una salida legible para humanos pasándola -h
:
du -h
Output4.0K ./.cache
8.0K ./.ssh
28K .
Para ver el tamaño de los archivos y los directorios, escriba lo siguiente:
du -a
Output0 ./.cache/motd.legal-displayed
4 ./.cache
4 ./.ssh/authorized_keys
8 ./.ssh
4 ./.profile
4 ./.bashrc
4 ./.bash_history
28 .
Para obtener un total en la parte inferior, puede agregar la -c
opción:
du -c
Output4 ./.cache
8 ./.ssh
28 .
28 total
Si sólo le interesa el total y no los detalles, puede emitir:
du -s
Output28 .
También hay una ncurses
interfaz para du
, apropiadamente llamada ncdu
, que puedes instalar:
sudo apt install ncdu
Esto representará gráficamente el uso de su disco:
ncdu
Output--- /root ----------------------------------------------------------------------
8.0KiB [##########] /.ssh
4.0KiB [##### ] /.cache
4.0KiB [##### ] .bashrc
4.0KiB [##### ] .profile
4.0KiB [##### ] .bash_history
Puede recorrer el sistema de archivos utilizando las flechas hacia arriba y hacia abajo y presionando Enter en cualquier entrada de directorio.
En la última sección, aprenderá a monitorear el uso de memoria.
Paso 4: Cómo monitorear el uso de la memoria
Puede comprobar el uso actual de la memoria en su sistema utilizando el free
comando.
Cuando se usa sin opciones, la salida se ve así:
free
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, puede pasar la -m
opción para mostrar la salida en megabytes:
free -m
Output total used free shared buff/cache available
Mem: 981 382 120 3 478 306
Swap: 0 0 0
La Mem
línea incluye la memoria utilizada para el almacenamiento en búfer y en caché, que se libera tan pronto como es necesaria para otros fines. Swap
es la memoria que se ha escrito en un swapfile
disco para conservar la memoria activa.
Por último, el vmstat
comando puede generar información variada sobre su sistema, incluida la memoria, el intercambio, el disco IO y la información de la CPU.
Puede utilizar el comando para obtener otra vista del uso de la memoria:
vmstat
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 unidades con la -S
bandera:
vmstat -S M
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 la memoria, escriba:
vmstat -s -S M
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 los procesos individuales del sistema, escriba:
vmstat -m -S M
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 le brindará detalles sobre qué tipo de información se almacena en la memoria caché.
Conclusión
Con estas herramientas, debería poder empezar a supervisar su servidor desde la línea de comandos. Existen muchas otras utilidades de supervisión que se utilizan para diferentes fines, pero estas son un buen punto de partida.
A continuación, es posible que desee obtener más información sobre la gestión de procesos de Linux utilizando ps, kill y nice .