¿Cómo ver los procesos actuales en un VPS Linux Ubuntu?

La gestión de procesos es una tarea crítica para cualquier administrador de un VPS (Virtual Private Server) en Ubuntu. Saber cómo ver los procesos actuales permite monitorear el consumo de recursos, identificar aplicaciones problemáticas y asegurar el funcionamiento estable del servidor. En este artículo, examinaremos en detalle varias formas de ver los procesos en un VPS Ubuntu, proporcionaremos ejemplos prácticos de uso de la línea de comandos y herramientas GUI, y compartiremos consejos útiles para interpretar los datos obtenidos.

Estudiaremos los comandos ps, top, htop y otras herramientas que permiten obtener información exhaustiva sobre los procesos en ejecución. Aprenderá a filtrar procesos por usuario, PID (Process ID) y otros criterios, y también aprenderá a analizar el uso de recursos (CPU, RAM) por cada proceso. Esta información le ayudará a optimizar el rendimiento de su VPS y a reaccionar rápidamente ante cualquier problema.

Comando ps: una visión general básica de los procesos

El comando ps (process status) es una de las herramientas más básicas y potentes para ver información sobre los procesos en Linux. Proporciona una instantánea de los procesos actuales en el sistema. Existen muchas opciones del comando ps que permiten personalizar la salida de información según sus necesidades. El comando básico ps sin opciones mostrará solo los procesos que se ejecutan en el shell actual. Para obtener una lista más completa de procesos, normalmente se utilizan las opciones aux.
ps aux
Este comando mostrará una lista de todos los procesos que se ejecutan en el sistema, con información detallada sobre cada proceso. Analicemos las columnas de salida del comando ps aux:
  • USER: El nombre del usuario propietario del proceso.
  • PID: El identificador del proceso (Process ID).
  • %CPU: El porcentaje de uso de la CPU por el proceso.
  • %MEM: El porcentaje de uso de la memoria RAM por el proceso.
  • VSZ: El tamaño virtual del proceso (en kilobytes).
  • RSS: El tamaño real del proceso en la memoria RAM (en kilobytes).
  • TTY: El terminal al que está adjunto el proceso (si lo hay). ? significa que el proceso no está adjunto a un terminal.
  • STAT: El estado del proceso (por ejemplo, S – durmiendo, R – en ejecución, Z – zombie).
  • START: La hora de inicio del proceso.
  • TIME: El tiempo total de uso de la CPU por el proceso.
  • COMMAND: El comando que inició el proceso.
Ejemplo:
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.1  16704  4192 ?        Ss   Dec01   0:03 /sbin/init
root         2  0.0  0.0      0     0 ?        S    Dec01   0:00 [kthreadd]
root         3  0.0  0.0      0     0 ?        I<   Dec01   0:00 [rcu_gp]
root         4  0.0  0.0      0     0 ?        I<   Dec01   0:00 [rcu_par_gp]
root         6  0.0  0.0      0     0 ?        I<   Dec01   0:00 [kworker/0:0H-kblockd]
...
Otra opción útil del comando ps es -f (full format), que proporciona más información sobre el proceso, incluido el PID del padre (PPID). Esto puede ser útil para rastrear la jerarquía de procesos.
ps -f
Combinando opciones, se puede obtener información aún más detallada. Por ejemplo, ps auxf mostrará una lista de todos los procesos con información completa y mostrará la jerarquía de procesos en forma de árbol.
ps auxf
Otro uso común es ps -ef, que también muestra todos los procesos, pero utiliza un formato de salida diferente, más común para los sistemas V (System V).
ps -ef
Consejo de experto: Para buscar un proceso específico por nombre, puede usar el comando ps en combinación con grep. Por ejemplo, para encontrar todos los procesos que contengan "nginx" en su nombre, puede usar el siguiente comando:
ps aux | grep nginx
Esto permitirá encontrar rápidamente los procesos relacionados con una aplicación específica.

Monitoreo interactivo con top y htop

Los comandos top y htop son herramientas interactivas que permiten monitorear en tiempo real el uso de recursos por el sistema y los procesos. Proporcionan información dinámica sobre la carga de la CPU, el uso de la memoria, el tiempo de actividad y otros parámetros importantes. top es una utilidad estándar que normalmente está preinstalada en la mayoría de las distribuciones de Linux. Para ejecutar top, simplemente ingrese el comando en la terminal:
top
Después de ejecutar top, se mostrará una lista dinámica de procesos, ordenados por defecto por el porcentaje de uso de la CPU. En la parte superior de la pantalla se muestra información resumida sobre el sistema, incluida la carga de la CPU, el uso de la memoria (RAM y swap), así como el número de procesos en ejecución. Dentro de top, se pueden usar varios comandos para controlar la visualización de la información. Por ejemplo:
  • q: Salir de top.
  • h: Mostrar ayuda.
  • k: Finalizar un proceso (requiere ingresar el PID).
  • M: Ordenar los procesos por uso de memoria.
  • P: Ordenar los procesos por uso de CPU.
  • 1: Mostrar información sobre cada CPU (si tiene un procesador multinúcleo).
htop es una versión más avanzada de top con una interfaz mejorada y funciones adicionales. También muestra información sobre los procesos en tiempo real, pero tiene una interfaz más intuitiva con resaltado de color y la capacidad de navegar con las teclas de control del cursor. htop normalmente no está preinstalado, por lo que debe instalarse por separado. En Ubuntu, esto se puede hacer con el comando:
sudo apt update
sudo apt install htop
Después de la instalación, ejecute htop con el comando:
htop
htop facilita la eliminación de procesos, el cambio de su prioridad (nice value) y el filtrado de la lista de procesos. También muestra información sobre la carga de la CPU por núcleos, lo que permite un análisis más detallado del rendimiento del sistema. Comparación de top y htop:
Funcióntophtop
InterfazDe texto, menos convenienteInteractiva, con resaltado de color
Gestión de procesosCapacidades limitadasCapacidades avanzadas (eliminar, cambiar la prioridad)
Monitoreo de CPUCarga total de la CPUCarga de la CPU por núcleos
InstalaciónNormalmente preinstaladoRequiere instalación
Ejemplo de uso de htop: Supongamos que nota que su VPS funciona lentamente. Ejecute htop y vea qué procesos consumen más CPU y memoria. Si encuentra un proceso que consume recursos de forma inadecuada, puede eliminarlo directamente desde htop, seleccionando el proceso y presionando la tecla F9. Consejo de experto: htop se puede configurar usando el archivo de configuración ~/.config/htop/htoprc. Puede cambiar los colores, agregar o eliminar columnas y configurar otras opciones de visualización.

Filtrado de procesos: búsqueda por usuario y PID

A menudo, es necesario filtrar la lista de procesos para encontrar un proceso específico o un grupo de procesos que pertenecen a un usuario determinado. Para hacer esto, puede usar varias herramientas y opciones del comando ps. Filtrado por usuario: Una forma de filtrar los procesos por usuario es usar el comando ps en combinación con el comando grep. Por ejemplo, para encontrar todos los procesos que pertenecen al usuario "john", puede usar el siguiente comando:
ps aux | grep john
Este comando mostrará una lista de todos los procesos en los que el nombre de usuario coincide con "john". Sin embargo, este método puede dar falsos positivos si el nombre de usuario aparece en el comando del proceso. Una forma más precisa es usar la opción -u del comando ps. Esta opción permite especificar el nombre del usuario cuyos procesos se deben mostrar.
ps -u john
Este comando mostrará una lista de todos los procesos que pertenecen al usuario "john". Filtrado por PID: A veces, es necesario obtener información sobre un proceso específico por su PID (Process ID). Para hacer esto, también puede usar el comando ps.
ps -p PID
Reemplace PID con el identificador de proceso real. Por ejemplo, para obtener información sobre el proceso con PID 1234, use:
ps -p 1234
Este comando mostrará información sobre el proceso con el PID especificado. Otra forma de obtener el PID de un proceso por su nombre es usar el comando pidof. Por ejemplo, para obtener el PID del proceso "nginx", use:
pidof nginx
Este comando mostrará el PID del proceso "nginx". Si se ejecutan varios procesos con ese nombre, mostrará todos los PID separados por un espacio. También puede usar el comando pgrep para buscar procesos por nombre u otros criterios. pgrep devuelve los PID de los procesos que coinciden con el patrón dado.
pgrep nginx
Este comando también mostrará el PID del proceso "nginx". pgrep tiene más opciones para filtrar procesos, por ejemplo, puede filtrar procesos por nombre de usuario:
pgrep -u john nginx
Este comando mostrará el PID del proceso "nginx" que pertenece al usuario "john". Ejemplo: Supongamos que desea detener el proceso de Apache que pertenece al usuario "www-data". Primero, encuentre el PID del proceso usando pgrep:
pgrep -u www-data apache2
Luego use el comando kill para finalizar el proceso:
sudo kill PID
Reemplace PID con el PID obtenido de pgrep. Consejo de experto: Para finalizar automáticamente todos los procesos que pertenecen a un usuario determinado, puede usar el comando pkill:
sudo pkill -u john
Este comando finalizará todos los procesos que pertenecen al usuario "john". Tenga cuidado al usar este comando, ya que puede provocar la pérdida de datos si los procesos no se han finalizado correctamente.

Análisis del uso de recursos por los procesos

Analizar el uso de recursos por los procesos es un paso importante para optimizar el rendimiento del VPS. Es necesario comprender qué procesos consumen más CPU y memoria para identificar posibles problemas y tomar las medidas necesarias. Como ya hemos comentado, los comandos top y htop proporcionan información sobre el uso de recursos en tiempo real. Sin embargo, también se puede usar el comando ps para obtener información más detallada. Uso de CPU: Para ver los procesos ordenados por uso de CPU, puede usar el comando ps con la opción -o para especificar las columnas que se mostrarán y el comando sort para ordenar los resultados.
ps -eo pid,pcpu,comm | sort -k2 -r | head -n 10
Este comando mostrará los 10 procesos que consumen más CPU, ordenados de forma descendente. Analicemos el comando:
  • ps -eo pid,pcpu,comm: Muestra el PID, el porcentaje de uso de la CPU (%CPU) y el nombre del comando (comm) para todos los procesos.
  • sort -k2 -r: Ordena los resultados por la segunda columna (CPU) en orden inverso (de mayor a menor).
  • head -n 10: Muestra las primeras 10 líneas de los resultados.
Uso de la memoria: De manera similar, para ver los procesos ordenados por uso de memoria, puede usar el siguiente comando:
ps -eo pid,pmem,comm | sort -k2 -r | head -n 10
Este comando mostrará los 10 procesos que consumen más memoria, ordenados de forma descendente. Aquí pmem significa el porcentaje de uso de la memoria (%MEM). Para mostrar la cantidad real de memoria que usa un proceso (RSS - Resident Set Size), puede usar el siguiente comando:
ps -eo pid,rss,comm | sort -k2 -r | head -n 10
Este comando mostrará los 10 procesos que usan más memoria real, ordenados de forma descendente. El valor RSS se muestra en kilobytes. Análisis del consumo de recursos por un proceso específico: Si conoce el PID de un proceso, puede usar el comando ps con la opción -p para obtener información sobre su uso de recursos:
ps -p PID -o pid,pcpu,pmem,rss,vsz,comm
Reemplace PID con el identificador de proceso real. Este comando mostrará el PID, el porcentaje de uso de la CPU, el porcentaje de uso de la memoria, el tamaño real (RSS), el tamaño virtual (VSZ) y el nombre del comando (comm) para el proceso especificado. Ejemplo: Supongamos que nota que un proceso con PID 4567 consume muchos recursos. Ejecute el siguiente comando:
ps -p 4567 -o pid,pcpu,pmem,rss,vsz,comm
La salida del comando le mostrará cuánta CPU y memoria está usando este proceso, lo que le ayudará a determinar si se trata de un comportamiento normal o indica un problema. Consejo de experto: Para la monitorización a largo plazo del uso de recursos, puede usar herramientas como sar (System Activity Reporter) o collectd. Permiten recopilar estadísticas sobre el uso de recursos por el sistema y los procesos a lo largo del tiempo, lo cual es útil para identificar tendencias y cuellos de botella.

Visualización de procesos gestionados por Systemd

Systemd es un system y service manager que se utiliza en la mayoría de las distribuciones modernas de Linux, incluido Ubuntu. Systemd gestiona la mayoría de los servicios y aplicaciones del sistema, por lo que es importante saber cómo ver los procesos gestionados por Systemd. Systemd utiliza el concepto de "unidades" (units) para representar servicios, sockets, dispositivos y otros componentes del sistema. Cada unidad tiene un archivo de configuración correspondiente que define su comportamiento. Para ver una lista de todas las unidades gestionadas por Systemd, puede usar el comando systemctl list-units:
systemctl list-units
Este comando mostrará una lista de todas las unidades, su estado actual (loaded, active, sub) y una descripción. El estado "active" significa que la unidad se está ejecutando y funcionando. Para filtrar la lista y mostrar solo las unidades en ejecución, puede usar la opción --state=active:
systemctl list-units --state=active
Para ver información sobre una unidad específica, por ejemplo, el servicio "nginx.service", puede usar el comando systemctl status:
systemctl status nginx.service
Este comando mostrará información detallada sobre el servicio nginx, incluido su estado, el PID del proceso principal, el uso de recursos y los registros más recientes. Si el servicio no se está ejecutando, el comando mostrará el mensaje correspondiente. Para obtener una lista de los procesos asociados con una unidad específica, puede usar el comando systemd-cgls (Control Group List):
systemd-cgls
Este comando mostrará una lista de todos los grupos de control (cgroups) de Systemd y los procesos asociados con ellos. Para filtrar por una unidad específica, puede especificar su nombre:
systemd-cgls nginx.service
Este comando mostrará una lista de los procesos asociados con el servicio nginx. Otra forma de obtener información sobre los procesos gestionados por Systemd es usar el comando ps en combinación con el filtrado por cgroup. Cada unidad de Systemd tiene su propio cgroup, y puede usar esta información para filtrar los procesos. Para conocer el cgroup del servicio nginx, puede usar el comando:
systemctl show nginx.service | grep ControlGroup
Este comando mostrará una línea que contiene el cgroup para el servicio nginx. Por ejemplo, la salida podría ser así:
ControlGroup=/system.slice/nginx.service
Luego puede usar esta información para filtrar los procesos usando el comando ps y grep:
ps axjf | grep '/system.slice/nginx.service'
Este comando mostrará una lista de los procesos asociados con el servicio nginx. Ejemplo: Supongamos que desea reiniciar el servicio Apache y verificar que todos los procesos asociados con él se hayan reiniciado correctamente. Primero, reinicie el servicio:
sudo systemctl restart apache2.service
Luego, verifique el estado del servicio:
systemctl status apache2.service
Y, finalmente, asegúrese de que todos los procesos se hayan reiniciado correctamente, viendo la lista de procesos asociados con el servicio:
systemd-cgls apache2.service
Consejo de experto: Systemd también proporciona la capacidad de monitorear los recursos utilizados por las unidades, usando el comando systemd-cgtop. Este comando muestra una lista de unidades, ordenadas por uso de CPU y memoria, lo que permite identificar rápidamente las unidades que consumen más recursos. Es posible que systemd-cgtop no esté instalado de forma predeterminada y puede requerir la instalación de un paquete separado.