Cómo ver los procesos en ejecución en Linux
Todo lo que se ejecuta en un sistema Linux, desde una aplicación de usuario hasta un servicio del sistema, es su propio proceso independiente. Incluso si tu ordenador está sentado en una pantalla de terminal en blanco, sin duda hay un montón de procesos ejecutándose en segundo plano. Hay varias herramientas de Linux que podemos utilizar para identificar todos los procesos de nuestro sistema, y eso es lo que trataremos en esta guía.
Saber cómo comprobar los procesos que se están ejecutando te permitirá verificar si algo se está ejecutando, terminarlo si es necesario y controlar su impacto en los recursos de tu sistema (CPU y RAM).
Listado de procesos con el comando ps
El comando ps puede listar todos los procesos que se están ejecutando en un sistema Linux con la opción -e.
ps -e
Es normal que un sistema tenga un gran número de procesos en ejecución en un momento dado, por lo que es más fácil cribar esta lista pasando el comando a más. Por ejemplo, para ver 15 líneas a la vez:
ps -e | more -15
La salida de ps nos muestra todos los procesos que se están ejecutando, su respectivo ID de proceso (abreviado como PID) y el TTY (interfaz del terminal en el que se está ejecutando el proceso). Un signo de interrogación en la columna TTY significa que el proceso no está conectado a ninguna interfaz de terminal: sólo se está ejecutando en segundo plano.
Puede que necesites saber el PID de un proceso para matarlo, o el TTY para poder volver al proceso abierto volviendo a conectarte a la ventana de terminal correcta.
Otra opción útil con ps es la opción -aux.
ps -aux
Al igual que la opción anterior, esta opción listará todos los procesos que se estén ejecutando en tu sistema. Pero también muestra el uso actual de la CPU y la RAM de cada proceso, así como el comando que lo ha generado.
Encontrar un proceso con pgrep
El comando pgrep es una especie de combinación de ps y grep. Podemos especificar el nombre -o parte del nombre- de un proceso que estemos buscando, y pgrep nos devolverá los respectivos ID de los procesos.
Por ejemplo, para buscar cualquier proceso relacionado con SSH en tu sistema, escribirías
pgrep ssh
Como se muestra en la captura de pantalla anterior, pgrep ha encontrado un proceso SSH con un PID de 1143. Para una mayor verificación, vamos a comprobarlo con el comando ps:
ps -e | grep 1143
Ver los procesos en ejecución con top
La utilidad top es, por supuesto, una herramienta de línea de comandos, pero proporciona una salida interactiva de todos los procesos que se están ejecutando actualmente, mostrando la información como esperarías ver en una interfaz gráfica. Es fácil empezar, sólo tienes que escribir top:
top
La salida de top nos proporciona mucha información, incluyendo el uso general de la CPU y la RAM en nuestro sistema. Pero estamos aquí por la lista de procesos, que encontrarás directamente debajo.
La ventana del terminal no es lo suficientemente grande como para que top pueda listartodos los procesos en ejecución, por lo que top muestra todos los que puede y los ordena por uso de recursos del sistema. En otras palabras, los procesos que utilizan más CPU y RAM aparecerán en la parte superior. Los procesos menos exigentes aparecerán más abajo en la lista, posiblemente cortados de la ventana del terminal.
Utiliza las teclas de flechade tu teclado para desplazarte hacia arriba y hacia abajo por la lista de procesos.
Hay bastante información en la lista sobre cada proceso en ejecución. Aquí tienes un rápido resumen de lo que significan estas diferentes columnas:
- PID: El ID del proceso de cada tarea.
- PR: La prioridad de programación de una tarea.
- NI: El valor agradable de una tarea. Los números negativos indican una mayor prioridad.
- VIRT: La cantidad de memoria virtual que se utiliza.
- RES: La cantidad de memoria residente que se está utilizando.
- SHR: La cantidad de memoria compartida que se está utilizando.
- S: El estado de una tarea (R=en ejecución, S=en reposo).
- %CPU: El porcentaje actual de CPU que está utilizando una tarea.
- %MEM: Porcentaje actual de RAM utilizado por una tarea.
- TIEMPO+: El tiempo de CPU de una tarea.
- COMANDO: El comando utilizado para generar la tarea.
Como ya hemos dicho, top es interactivo, por lo que podemos utilizar algunos atajos de teclado para hacer algunas cosas interesantes con él. A continuación repasaremos algunos de los más útiles.
Pulsa la teclaz para codificar por colores los procesos en ejecución. Esto hace más fácil diferenciar las tareas en ejecución de los procesos dormidos o zombis.
Pulsa la teclac para obtener el comando completo utilizado para cada tarea. Esto mostrará la ruta absoluta, junto con las opciones utilizadas.
Pulsa la teclak para matar un proceso en ejecución, directamente desde la utilidad superior. Esto ahorra un poco de tiempo al tener que salir de la utilidad y emitir un comando de matar por separado. Sólo tendrás que teclear el PID del proceso que quieres terminar:
Pulsa la teclar para cambiar la prioridad de un proceso con renice. Introduce el PID del proceso que deseas renombrar:
Para más opciones, pulsa la teclah(ayuda) para ver todo lo que puede hacer top.
Cuando hayas terminado de utilizar la utilidad top, puedes salir de la herramienta y volver al terminal pulsandoq.
Ver los procesos en ejecución con htop
La utilidad htop se basa en top y es un poco más fácil de usar y agradable de ver. El único inconveniente es que no está instalada por defecto en todas las distribuciones de Linux, así que puede que tengas que instalarla primero. Debería estar en los repositorios de tu sistema operativo, así que aquí tienes cómo instalarlo con tu gestor de paquetes:
Debian y Ubuntu:
sudo apt-get install htop
CentOS y Fedora:
dnf install htop
Red Hat:
yum install htop
Una vez instalado, sólo tienes que escribir htop para ejecutar la utilidad.
htop
Puedes utilizar el ratón para interactuar con htop, y los distintos comandos de teclado aparecen en la parte inferior de la ventana del terminal. Funciona prácticamente igual que top, pero con una interfaz más limpia y fácil de entender.
Conclusión
En esta guía, te hemos mostrado unos cuantos métodos diferentes para ver los procesos en ejecución en un sistema Linux. El que utilices dependerá de la situación en la que te encuentres y de tus preferencias personales, pero cada método tiene sus propias ventajas.
Utilizar lo que has aprendido en esta guía te permitirá identificar todos los procesos que se están ejecutando en tu sistema, su impacto en los recursos del sistema, y te dará la posibilidad de terminar o repriorizar las tareas como creas conveniente.