Cómo comprobar si un proceso está en ejecución en Linux

LinuxLinuxBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, aprenderás las habilidades fundamentales de Linux para administrar y monitorear procesos. Explorarás cómo listar todos los procesos en ejecución en tu sistema utilizando el comando ps aux, que proporciona una instantánea de los procesos actuales con información detallada como el usuario, el PID, el uso de CPU y memoria.

Además, descubrirás cómo encontrar de manera eficiente procesos específicos utilizando el comando pgrep y obtener información sobre la actividad de los procesos en tiempo real y el consumo de recursos mediante el uso del comando top. Estas técnicas son esenciales para la administración del sistema, la resolución de problemas y la comprensión del rendimiento del sistema.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/ProcessManagementandControlGroup(["Process Management and Control"]) linux(("Linux")) -.-> linux/SystemInformationandMonitoringGroup(["System Information and Monitoring"]) linux/ProcessManagementandControlGroup -.-> linux/kill("Process Terminating") linux/ProcessManagementandControlGroup -.-> linux/pkill("Pattern-Based Killing") linux/SystemInformationandMonitoringGroup -.-> linux/ps("Process Displaying") linux/SystemInformationandMonitoringGroup -.-> linux/top("Task Displaying") subgraph Lab Skills linux/kill -.-> lab-558747{{"Cómo comprobar si un proceso está en ejecución en Linux"}} linux/pkill -.-> lab-558747{{"Cómo comprobar si un proceso está en ejecución en Linux"}} linux/ps -.-> lab-558747{{"Cómo comprobar si un proceso está en ejecución en Linux"}} linux/top -.-> lab-558747{{"Cómo comprobar si un proceso está en ejecución en Linux"}} end

Listar procesos en ejecución con ps aux

En este paso, aprenderás cómo ver los procesos que se están ejecutando actualmente en tu sistema Linux utilizando el comando ps. Los procesos son simplemente programas que se están ejecutando. Entender cómo listar e identificar procesos es una habilidad fundamental en la administración y resolución de problemas de sistemas Linux.

El comando ps se utiliza para informar una instantánea de los procesos actuales. Cuando se utiliza con ciertas opciones, puede proporcionar mucha información detallada.

Vamos a utilizar el comando ps con las opciones aux. Estas opciones se utilizan comúnmente juntas para mostrar todos los procesos en ejecución en el sistema en un formato amigable para el usuario.

  • a: Muestra todos los procesos.
  • u: Muestra el usuario y el propietario del proceso.
  • x: Muestra los procesos que no tienen un terminal de control (útil para ver los procesos en segundo plano).

Abre tu terminal si no está abierta. Por defecto, debes estar en el directorio ~/project.

Escribe el siguiente comando y presiona Enter:

ps aux

Verás una larga lista de procesos, similar a esta (la salida exacta variará):

USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root           1  0.0  0.1  16840  9880 ?        Ss   Jul23   0:01 /sbin/init
root           2  0.0  0.0      0     0 ?        S    Jul23   0:00 [kthreadd]
root           3  0.0  0.0      0     0 ?        I<   Jul23   0:00 [rcu_gp]
...
labex      12345  0.1  0.5 123456 54321 pts/0    Ss   HH:MM   0:00 /usr/bin/zsh
labex      12367  0.0  0.1  21000  5000 pts/0    R+   HH:MM   0:00 ps aux
...

Analicemos las columnas que ves:

  • USER: El usuario que es propietario del proceso.
  • PID: El ID del proceso, un número único para cada proceso en ejecución.
  • %CPU: El porcentaje de tiempo de CPU que está utilizando el proceso.
  • %MEM: El porcentaje de memoria física que está utilizando el proceso.
  • VSZ: Virtual Set Size (tamaño del conjunto virtual), la cantidad total de memoria virtual utilizada por el proceso.
  • RSS: Resident Set Size (tamaño del conjunto residente), la cantidad de memoria física utilizada por el proceso.
  • TTY: El terminal de control para el proceso (si lo hay). ? significa que no hay terminal de control.
  • STAT: El estado del proceso (por ejemplo, R para en ejecución, S para en espera, Z para zombie).
  • START: La hora en que se inició el proceso.
  • TIME: El tiempo acumulado de CPU que ha utilizado el proceso.
  • COMMAND: El comando que inició el proceso.

Desplazarte por esta salida puede resultar abrumador. En el siguiente paso, aprenderás cómo filtrar esta salida para encontrar procesos específicos.

Haz clic en Continuar para continuar.

Encontrar un proceso específico utilizando pgrep

En el paso anterior, viste que ps aux puede generar una gran cantidad de salida. A menudo, solo quieres encontrar un proceso específico. El comando pgrep está diseñado para este propósito. Busca procesos basándose en su nombre y devuelve sus IDs de proceso (PIDs).

La sintaxis básica de pgrep es pgrep [opciones] patrón. El patrón suele ser el nombre del proceso que estás buscando.

Intentemos encontrar el PID del proceso zsh, que es la shell que estás utilizando actualmente en la terminal.

Escribe el siguiente comando y presiona Enter:

pgrep zsh

Deberías ver uno o más números impresos en la terminal. Estos son los PIDs de los procesos zsh en ejecución.

12345

(El número exacto será diferente para ti).

Si quieres ver el comando completo asociado con el PID encontrado por pgrep, puedes combinarlo con el comando ps. La opción -p de ps te permite especificar un PID.

Vamos a encontrar el comando completo para el proceso zsh utilizando su PID. Primero, ejecuta pgrep zsh de nuevo para obtener el PID actual. Supongamos que el PID es 12345 para este ejemplo (reemplaza 12345 con el PID real que obtengas).

Ahora, utiliza ps -p seguido del PID:

ps -p 12345

Verás una salida similar a esta:

    PID TTY          TIME CMD
  12345 pts/0    00:00:00 zsh

Esto confirma que el PID 12345 corresponde al comando zsh.

pgrep es una forma rápida de encontrar el PID de un proceso cuando conoces su nombre. Esto es especialmente útil cuando necesitas el PID para otros comandos, como terminar un proceso (lo aprenderás en un futuro laboratorio).

Haz clic en Continuar para pasar al siguiente paso.

Monitorear detalles de procesos con el comando top

En este paso, aprenderás sobre el comando top, que proporciona una vista dinámica y en tiempo real de los procesos que se ejecutan en tu sistema. Mientras que ps aux te da una instantánea, top se actualiza continuamente, mostrándote qué procesos están utilizando más CPU y memoria.

El comando top es muy útil para monitorear el rendimiento del sistema e identificar procesos que pueden estar consumiendo recursos excesivos.

Escribe el siguiente comando en tu terminal y presiona Enter:

top

Tu terminal cambiará para mostrar una lista de procesos que se actualiza constantemente. La salida se parece a esto:

top - HH:MM:SS up  X days, HH:MM,  X users,  load average: X.XX, X.XX, X.XX
Tasks: XXX total,   X running, XXX sleeping,   X stopped,   X zombie
%Cpu(s):  X.X us,  X.X sy,  X.X ni, XX.X id,  X.X wa,  X.X hi,  X.X si,  X.X st
MiB Mem :  XXXX.X total,  XXXX.X free,  XXXX.X used,  XXX.X buff/cache
MiB Swap:  XXXX.X total,  XXXX.X free,  XXXX.X used. XXXX.X avail Mem

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
  12345 labex     20   0  123456  54321  32100 S   0.1   0.5   0:00.10 zsh
  12367 labex     20   0   21000   5000   3000 R   0.0   0.1   0:00.05 top
  ...

Veamos las áreas clave de la salida de top:

  • Área de resumen (parte superior): Esta sección muestra información de resumen del sistema, incluyendo:

    • Hora actual y tiempo de actividad del sistema.
    • Número de usuarios conectados.
    • Promedio de carga (número promedio de procesos esperando para ejecutarse en los últimos 1, 5 y 15 minutos).
    • Número total de tareas (procesos) y sus estados (en ejecución, en espera, detenidos, zombies).
    • Desglose del uso de CPU (usuario, sistema, inactivo, etc.).
    • Uso de memoria (total, libre, utilizada, buffer/caché).
    • Uso del espacio de intercambio (swap).
  • Área de lista de procesos (parte inferior): Esta sección lista los procesos individuales, ordenados por defecto por uso de CPU. Las columnas son similares a las de ps aux, pero top las actualiza en tiempo real. Las columnas clave incluyen:

    • PID: ID del proceso.
    • USER: Propietario del proceso.
    • %CPU: Porcentaje de uso de CPU.
    • %MEM: Porcentaje de uso de memoria.
    • COMMAND: Nombre del comando.

Mientras top está en ejecución, puedes interactuar con él utilizando varias teclas:

  • Presiona q para salir de top.
  • Presiona M para ordenar la lista de procesos por uso de memoria.
  • Presiona P para ordenar la lista de procesos por uso de CPU (esto es el valor por defecto).
  • Presiona k para terminar un proceso (se te pedirá el PID). ¡Ten cuidado con esto!

Tómate un momento para observar los procesos y cómo cambian el uso de CPU y memoria. Verás el propio proceso top cerca de la parte superior de la lista porque está utilizando activamente la CPU para actualizar la pantalla.

Cuando hayas terminado de explorar top, presiona q para salir y volver al indicador de terminal normal.

Haz clic en Continuar para completar este paso y el laboratorio.

Resumen

En este laboratorio, has aprendido técnicas fundamentales para comprobar si un proceso está en ejecución en Linux. Comenzaste utilizando el comando ps aux para listar todos los procesos en ejecución en el sistema, comprendiendo las diversas columnas como USER, PID, %CPU y %MEM, que proporcionan una instantánea de la actividad de los procesos.

Luego, exploraste cómo encontrar de manera eficiente un proceso específico utilizando el comando pgrep, que busca procesos basándose en su nombre u otros atributos y devuelve su ID de proceso (PID). Finalmente, aprendiste cómo monitorear los detalles de los procesos en tiempo real utilizando el comando top, que proporciona una vista dinámica del uso de recursos del sistema y las estadísticas de los procesos individuales, lo que te permite observar el consumo de CPU y memoria.