Objetivo:
Profundizar en la inspección avanzada de procesos en Linux mediante la combinación de ps con filtros de búsqueda (grep), la visualización de datos de sesión y jerarquías (opciones ux, fx), y la representación en árbol de procesos mediante el comando pstree (con localizadores de PID -p y rastreo de ancestros -s).
Escenario:
- Herramientas: Terminal de Linux en un entorno gráfico de Debian o basado en Debian.
- Conceptos clave: Rastreo de ancestros (PPID), filtrado con
grep, árbol de procesos (pstree), opciones de árbol enps(fx), hilos de aplicaciones multihilo (ej. Firefox), identificadores de proceso en árbol (pstree -p) y rastreo de ascendencia desde un hijo hacia la raíz (pstree -s).
Instrucciones:
Fase 1: Rastreo manual de la cadena de procesos ancestros mediante ps -ef | grep
- Abre la terminal de Linux.
- Ejecuta el comando básico
pspara identificar el PID de tu shell actual (bash): - Anota el
PIDde tubash(por ejemplo, 1772). - Filtra la lista completa de procesos para localizar quién es el proceso padre (PPID) de tu consola:
- Identifica el
PPIDresultante (por ejemplo, el servidor de terminalgnome-terminal-servercon PID 1767) y repite la búsqueda para encontrar al padre de este último: - Continúa el rastreo ascendente hacia atrás identificando los PPID sucesivos hasta verificar que la cadena finaliza indefectiblemente en el proceso raíz
systemd(PID 1).
ps
ps -ef | grep 1772
ps -ef | grep 1767
Fase 2: Visualización de procesos de usuario y árboles jerárquicos con ps
- Muestra todos los procesos asociados a tu usuario actual (se ejecuten o no en la terminal) usando la opción
uxy paginándolos: - Navega por la salida y observa la presencia de los procesos gráficos de tu entorno (Xorg, GNOME, etc.). Presiona
qpara salir. - Añade la opción
f(forest) para representar visualmente las relaciones padre-hijo mediante sangrías y ramas de árbol: - Localiza al final del listado la rama donde se encuentra tu shell
bashy comprueba cómo cuelga visualmente el comandopsejecutado dentro de ella.
ps ux | less
ps fx | less
Fase 3: Búsqueda interactiva de procesos de aplicaciones (Ejemplo: Firefox)
- Comprueba si el navegador Firefox está en ejecución buscando su nombre con
psygrep: - Abre la aplicación Firefox desde la interfaz gráfica o el menú de aplicaciones de tu sistema.
- Vuelve a la terminal y ejecuta nuevamente el comando anterior para observar cómo se han creado múltiples subprocesos e hilos de ejecución pertenecientes a Firefox:
ps -ef | grep firefox
ps -ef | grep firefox
Fase 4: Exploración del árbol global y rastreo descendente/ascendente con pstree
- Ejecuta el comando
pstreepaginado conlesspara examinar la representación gráfica global del sistema: - Muestra la vista en árbol agregando los números de
PIDde cada proceso mediante el parámetro-p: - Obtén el PID de tu shell
bashactual ejecutandops. - Rastrea directamente todos los ancestros de tu shell hacia arriba (desde la consola hasta el proceso raíz
systemd) mediante el modificador-s(show parents) especificando tu PID: - Limpia la terminal:
pstree | less
pstree -p | less
pstree -s [TU_PID_BASH]
clear
Preguntas de reflexión:
- ¿Cómo nos permite el comando
ps -ef | grep [PID]reconstruir la línea genealógica completa de un proceso? - ¿Qué diferencia existe entre ejecutar
ps uyps uxrespecto a los procesos mostrados? - ¿Qué representa la opción
fdentro del comandops fxy cómo facilita la interpretación de la salida? - ¿Por qué una aplicación gráfica moderna como Firefox muestra múltiples entradas o procesos en la salida de
ps -ef | grep firefox? - ¿Cuál es la función principal del comando
pstreeen comparación con el comandopsestándar? - ¿Qué información adicional proporciona el parámetro
-pal ejecutarse junto apstree? - ¿Para qué sirve la opción
-sen el comandopstreey qué utilidad práctica ofrece frente al rastreo manual conps? - Si al ejecutar
pstree -s [PID]observamos quesystemdaparece repetido en la cadena superior del árbol, ¿significa que el proceso está duplicado en el sistema? - ¿Por qué al filtrar con
ps -ef | grep [cadena]suele aparecer en los resultados la propia ordengrepque acabamos de lanzar? - ¿En qué tipo de entorno de Linux (servidor sin GUI vs. escritorio gráfico) se genera un número mayor de procesos por usuario en
ps uxy por qué?
Haz clic aquí para ver las soluciones y explicaciones
1. ¿Cómo nos permite el comando ps -ef | grep [PID] reconstruir la línea genealógica completa de un proceso?
Al buscar el identificador de un proceso en la salida completa de ps -ef, obtenemos su campo PPID (Parent PID). Tomando ese valor de PPID y volviéndolo a buscar cíclicamente con grep, podemos ir ascendiendo escalón por escalón por la cadena de procesos padres hasta llegar al proceso inicial con PID 1 (systemd / init).
2. ¿Qué diferencia existe entre ejecutar ps u y ps ux respecto a los procesos mostrados?
ps u muestra únicamente los procesos del usuario que están vinculados a una terminal (TTY) activa. Al añadir la opción x (ps ux), el comando incluye también todos los procesos del usuario que se ejecutan sin una terminal asignada, como servicios de fondo y aplicaciones del entorno gráfico.
3. ¿Qué representa la opción f dentro del comando ps fx y cómo facilita la interpretación de la salida?
La opción f activa el modo de formato "bosque" o árbol (forest format). Renderiza la lista con caracteres de sangría visual que muestran de manera clara e intuitiva qué subprocesos han sido engendrados por cada proceso padre.
4. ¿Por qué una aplicación gráfica moderna como Firefox muestra múltiples entradas o procesos en la salida de ps -ef | grep firefox?
Porque los navegadores modernos utilizan arquitecturas multiproceso para separar pestañas, renderizado web, complementos y motores de audio/vídeo en procesos aislados por motivos de rendimiento, estabilidad y seguridad.
5. ¿Cuál es la función principal del comando pstree en comparación con el comando ps estándar?
pstree está diseñado específicamente para formatear y presentar la totalidad de la estructura de procesos del sistema en forma de árbol jerárquico claro, facilitando la comprensión de las dependencias padre-hijo sin necesidad de interpretar manualmente listas planas de PIDs y PPIDs.
6. ¿Qué información adicional proporciona el parámetro -p al ejecutarse junto a pstree?
El parámetro -p (show PIDs) añade el número identificador numérico (PID) entre paréntesis al lado del nombre de cada proceso listado en el árbol.
7. ¿Para qué sirve la opción -s en el comando pstree y qué utilidad práctica ofrece frente al rastreo manual con ps?
La opción -s (show parents) permite especificar el PID de un proceso concreto y muestra únicamente su línea de ascendencia (sus procesos padres, abuelos, etc. hacia arriba hasta la raíz), evitando tener que realizar múltiples búsquedas consecutivas con grep.
8. Si al ejecutar pstree -s [PID] observamos que systemd aparece repetido en la cadena superior del árbol, ¿significa que el proceso está duplicado en el sistema?
No. Indica que el proceso principal del sistema (systemd con PID 1) ha engendrado una instancia o servicio subordinado de systemd encargado de gestionar la sesión específica de usuario (systemd --user), manteniendo la jerarquía adecuada.
9. ¿Por qué al filtrar con ps -ef | grep [cadena] suele aparecer en los resultados la propia orden grep que acabamos de lanzar?
Porque en el instante en que la tubería ejecuta ps -ef, la orden grep ya se ha instanciado como proceso hijo para realizar el filtrado. Al contener la propia línea de comandos la palabra buscada, grep se localiza y se incluye a sí mismo en los resultados de la búsqueda.
10. ¿En qué tipo de entorno de Linux (servidor sin GUI vs. escritorio gráfico) se genera un número mayor de procesos por usuario en ps ux y por qué?
En un escritorio gráfico. Los entornos gráficos (como GNOME o KDE) requieren lanzar decenas de demonios, gestores de ventanas, servidores de sonido, notificadores y servicios en segundo plano para dar soporte a la interfaz visual del usuario.
Ficha de Laboratorio: Árboles de Procesos y Rastreo de Ancestros con PS y PSTREE
Instrucciones de entrega:
- Rellena los campos y responde en este formulario desde tu navegador.
- Pulsa el botón de imprimir al final de la página.
- Selecciona "Guardar como PDF" en el diálogo de impresión.
- Entrega el archivo PDF en el aula virtual.
Alumno/a: Fecha:
Grupo:
Completa la ficha realizando las siguientes actividades:
- Rastreo genealógico de tu Shell hasta el proceso raíz PID 1.
Indica el PID de tu shell y escribe el comando usado para consultar su PPID:
Escribe la secuencia de PIDs/PPIDs descubiertos hasta alcanzar PID 1:
Explica la utilidad del comandogrepen este procedimiento:
- Visualización en modo bosque/árbol con
ps fx.
Escribe la orden para mostrar los procesos de tu usuario en formato jerárquico sangrado:
Copia el fragmento de texto donde se observa la relación entre tu shell y la orden ejecutada:
Explica qué diferencia visual aporta la opciónfal comandops:
- Monitoreo de procesos de aplicaciones en ejecución (Firefox).
Escribe la orden utilizada para buscar procesos pertenecientes a la aplicación Firefox:
Copia la salida devuelta tras abrir la aplicación:
Explica por qué surgen múltiples entradas de procesos al abrir un navegador moderno:
- Uso de
pstreecon identificadores de proceso (-p).
Escribe el comando para ver el árbol completo del sistema mostrando los PIDs entre paréntesis:
Copia las primeras 4 líneas de la salida del árbol del sistema:
Explica la ventaja de utilizarpstree -pfrente al comandopstradicional:
- Rastreo ascendente automático de ancestros con
pstree -s.
Escribe el comando para mostrar únicamente los padres y ancestros de tu PID de bash:
Copia la línea o árbol de ancestros devuelto por la consola:
Explica qué función cumple el modificador-senpstree: