¿Tienes al menos cinco pestañas abiertas en el navegador intentando encontrar la solución a un problema de Linux?
Este comportamiento no es exclusivo tuyo ni de los humanos en general. Las máquinas también realizan varias tareas a la vez. Al igual que tú, Linux es multitarea y tiene varios procesos ejecutándose al mismo tiempo. Tanto si eres desarrollador que usa Linux de forma profesional como si eres un usuario que lo utiliza para sus tareas del día a día, conviene que entiendas estos procesos paralelos para mantener el control total sobre tu sistema. La gestión de procesos y el control del sistema son aspectos fundamentales en cualquier instalación de Linux.
Para gestionar de forma eficiente los procesos que se ejecutan en el sistema, ver lo que ocurre en tiempo real, tener una visión general de todos los procesos en segundo plano y controlar los recursos del sistema, necesitas conocimientos técnicos de gestión de procesos. El comando ps aux es una herramienta muy útil que desempeña un papel clave en la gestión de procesos y el control del sistema. En este artículo profundizaremos en el comando ps aux y sus casos de uso, y también repasaremos los fundamentos de cómo funcionan los procesos en Linux.
Gestión de procesos en Linux
Cuando trabajamos con Linux, la mayor parte de nuestra interacción con el sistema se produce mediante comandos. En Linux, un proceso es la ejecución de un comando. La gestión de procesos en Linux consiste en manipular los procesos que ha iniciado un comando: puedes terminar un proceso, iniciarlo o reanudar los que hayan sido detenidos. También puedes intervenir en comandos que están en curso.
Existen dos tipos de procesos en Linux:
- Procesos en primer plano
- Procesos en segundo plano
Linux Procesos en primer plano
Un proceso en primer plano es un proceso que se está ejecutando activamente y que, por lo general, requiere interacción constante y en tiempo real con el usuario. Mientras un proceso en primer plano está en ejecución, el resto de procesos quedan en pausa, por lo que no es posible ejecutar otros comandos. Este tipo de proceso recibe datos del teclado a través de la entrada estándar o stdin. Para evitar confusiones, stdin y stdout son flujos de datos de Linux, junto con stderr. Es básicamente la forma en que el usuario interactúa con el proceso y le proporciona datos. La salida estándar o stdout es la que genera el proceso en función de su lógica y de los datos de entrada. Los procesos en primer plano son el modo de ejecución predeterminado en Linux.
Linux Procesos en segundo plano
Los procesos en segundo plano son todo lo contrario a los procesos en primer plano: no requieren interacción con el usuario ni ocupan exclusivamente la terminal, lo que permite ejecutar otros procesos al mismo tiempo. Su gestión de entrada y salida también es diferente: normalmente no leen stdin, aunque sus resultados sí pueden mostrarse como stdout. Esta salida aparece de forma simultánea con la de otros procesos en primer plano, de modo que es posible ver el progreso o los resultados del proceso en segundo plano sin interrumpir otras tareas.
Dado que en Linux una gran variedad de tareas depende de la línea de comandos, los procesos en primer plano pueden resultar un obstáculo, mientras que ejecutar procesos en segundo plano libera la terminal para trabajar en otras cosas. Por eso, mover un proceso al segundo plano es una opción muy útil en estos casos. Para enviar un proceso al segundo plano primero hay que detener su ejecución en primer plano, lo cual se hace simplemente pulsando CTRL+Z. A continuación, al escribir el comando bg, el proceso detenido se reanudará en segundo plano. El comando fg hace lo contrario: devuelve el proceso al primer plano.
Estado de los procesos: sintaxis, comandos e interpretación de la salida
Para gestionar los procesos de forma eficaz en Linux es necesario conocer su estado, que puede consultarse con el comando ps aux. Antes de profundizar en él, conviene revisar los distintos estados en que puede encontrarse un proceso. Aunque existen varios tipos, la siguiente tabla recoge los más habituales:
| Estado del proceso | descripción | |
| En ejecución (R) | El proceso está en ejecución en este momento y consume recursos de CPU. | |
| En espera | Interrumpible (S) | El proceso está esperando una entrada o un evento concreto para reanudar su ejecución. En este momento no consume recursos de CPU. Cuando los recursos están disponibles o se recibe una señal, el proceso se reanuda. |
| No interrumpible (D) | Al igual que un proceso en espera interrumpible, un proceso en espera no interrumpible no consume recursos de CPU. La diferencia es que no reacciona a señales: solo se reanuda cuando los recursos están disponibles. | |
| Detenido (T) | Una entrada del usuario o un evento concreto ha pausado el proceso. Un proceso en estado detenido no consume recursos de CPU. | |
| Muerto (X) | El proceso ha finalizado y ya no existe. | |
Conocer bien estos estados es fundamental para gestionar y depurar sistemas Linux de forma efectiva. A continuación, veremos la sintaxis y los comandos para consultar el estado de los procesos en Linux, así como la forma de interpretar la salida.
Sintaxis y comandos para consultar el estado de los procesos
Puedes consultar el estado de los procesos en Linux con la sintaxis básica del comando ps:
ps [process name]
El comando ps también admite otras opciones:
aux: Esta opción muestra una lista completa de todos los procesos en ejecución del sistema. Incluye información como los identificadores de proceso (PID), los identificadores de proceso padre (PPID), el uso de CPU y de memoria, y el estado de cada proceso. La salida de ps aux es más clara, más legible y contiene bastante más información útil que la del comando ps básico.
ef: Esta opción muestra un listado detallado de los procesos con información adicional, incluida la jerarquía de procesos en forma de árbol.
l: Esta opción muestra un formato de listado extendido con información más detallada sobre los procesos.
Interpretar la salida
Al ejecutar el comando ps con las opciones deseadas, se genera una salida con los procesos que están corriendo en ese momento en el sistema. Esta salida se organiza en columnas que muestran distintos atributos de cada proceso: el identificador de proceso (PID), el identificador de proceso padre (PPID), el uso de CPU, el uso de memoria, el estado del proceso, el tipo de terminal y el nombre del comando.
Esto es lo que representa cada columna:
PID: Esta columna muestra el identificador único del proceso.
TTY: Esta columna indica el tipo de terminal desde el que el usuario ha iniciado sesión.
HORA: Esta columna indica cuánto CPU ha consumido el proceso, expresado en minutos y segundos.
CMD: Esta columna muestra el nombre del comando que inició el proceso.
Analizar la información que ofrece el comando ps te da una visión más profunda del comportamiento de tu máquina Linux.
Técnicas avanzadas del comando ps para la gestión de procesos
Veamos algunas de las funciones avanzadas del comando ps y cómo sacarles el máximo partido:
1. Ordenar procesos
El comando ps aux permite ordenar la salida final según distintas columnas. Por ejemplo, puedes ordenar los procesos por identificador de proceso o por uso de CPU para verlos en el orden que necesites.
A continuación se muestra un ejemplo de cómo ordenar los procesos por identificador de proceso con ps aux:
ps aux –-sort pid
El comando head se usa para obtener únicamente las cinco primeras filas de la salida.

2. Visualización del árbol de procesos
Si quieres ver con claridad la relación padre-hijo entre procesos, puedes usar el comando ps con la opción forest.
ps -aux --forest

Para ver la relación entre procesos en forma de árbol, también puedes usar el comando pstree. Este comando genera una salida más fácil de interpretar y representa la jerarquía entre procesos de forma muy clara. Para usarlo, escribe el siguiente comando:
pstree [pid or username]
Al pasarle un PID a este comando, le indicas que tome ese proceso como la raíz del árbol.
3. Filtrado de procesos
Imagina que quieres trabajar con un grupo específico de procesos; por ejemplo, listar todos los procesos de un usuario concreto. Puedes filtrar procesos según un criterio determinado usando el comando ps. En este ejemplo, filtramos los procesos por nombre de usuario.
ps -u [username]

El comando ps aux grep permite filtrar procesos según cualquier patrón o palabra clave que le indiques. Mira el siguiente código a modo de ejemplo:

Este comando primero lista todos los procesos y pasa la salida al comando grep para filtrar esa larga lista por ID de proceso. En la imagen anterior puedes ver todos los procesos que contienen el número 15 en su información.
Para obtener más información sobre el comando ps y sus posibilidades, puedes consultar su página del manual. El siguiente código la mostrará:
man ps
Gestión de la prioridad de tareas en Linux
Para explicar bien cómo funciona la gestión de procesos en Linux, también hay que hablar de la prioridad de procesos y de cómo modificarla. Imagina una situación en la que tienes varios procesos en ejecución y CPU está sobrecargado de tareas. Si quieres gestionar tus recursos correctamente en ese escenario, necesitas cambiar la prioridad de los procesos en ejecución. Cada proceso en Linux tiene un valor de prioridad que ayuda al kernel a decidir qué tareas atender antes. Este valor va de -20 a 19: 19 es la prioridad más baja y -20 la más alta. El proceso con mayor prioridad recibe más tiempo de CPU que el resto. Estos valores de prioridad se conocen habitualmente como valores "nice": cuanto más bajo es el valor nice, mayor es la prioridad.
Puedes usar los comandos nice y renice para distribuir los recursos del sistema de forma eficiente.
Antes de cambiar la prioridad de los procesos, veamos el primer caso de uso del comando ps.
- Mostrar la prioridad actual de todos los procesos con el comando ps:
Este comando lista todos los procesos junto con sus IDs de proceso (PID), nombres de comando y prioridad actual (valor nice):
ps -eo pid,cmd,nice

- Iniciar un proceso con alta prioridad predeterminada usando el comando nice:
Puedes iniciar un proceso con la prioridad que prefieras usando este comando:
nice -n [priority] [command]
Sustituye [priority] por el valor negativo deseado que represente el nivel de prioridad, y [command] por el comando que quieres ejecutar.
Un ejemplo:

- Cambiar la prioridad de un proceso en ejecución:
renice -n [priority] -p [PID]
Reemplaza el ID del proceso que quieres modificar por [PID].
Si quieres una máquina Linux potente para todo tipo de tareas, Linux VPS es la mejor opción para ti. Cloudzy ofrece varios planes Linux VPS con tu distribución preferida preinstalada. Con ventajas como soporte 24/7, una política de reembolso de 30 días y una garantía de disponibilidad del 99,95 %, Cloudzy ha logrado mantener precios competitivos. Nuestros planes Linux VPS comienzan desde solo 4,95 $/mes.
Consigue un VPS Linux económico o premium para alojar tu sitio web o escritorio remoto, al precio más competitivo del mercado. VPS sobre Linux KVM para mayor eficiencia, con hardware potente y almacenamiento NVMe SSD para mayor velocidad.
Leer másConclusión
En definitiva, dominar la gestión de procesos y el control del sistema es imprescindible para administradores de sistemas, entusiastas de Linux que quieren profundizar sus conocimientos y usuarios habituales de Linux. Conocer las capacidades del comando ps facilita considerablemente el aprendizaje de la gestión de procesos. Por eso, este artículo repasó los casos de uso más importantes del comando ps y ofreció una introducción a los procesos en Linux.
Preguntas frecuentes
¿Qué es el comando ps aux en Linux?
El comando ps aux es uno de los más utilizados en Linux para obtener información sobre los procesos en ejecución. Genera una lista completa de procesos en un formato claro, que incluye sus IDs de proceso (PIDs), uso de CPU y memoria, estados de ejecución y otros datos relevantes.
¿Qué tipos de procesos existen en Linux?
Procesos en primer plano y procesos en segundo plano. Los procesos en primer plano ocupan la terminal mientras se ejecutan e impiden otras ejecuciones. Los procesos en segundo plano se ejecutan sin ocupar la terminal por completo.
¿Cómo puedo ver la lista de procesos en ejecución en mi sistema Linux?
Puedes consultar los procesos en ejecución de tu sistema Linux con comandos como ps, top o htop. Por ejemplo, el comando ps aux de Linux muestra información detallada sobre todos los procesos activos.