Administrar procesos en Linux puede parecer desalentador para un nuevo administrador de sistemas (sysadmin) al principio. Pero con un poco de explicación y demostración, aprenderá cómo encontrar y realizar la terminación de procesos en Linux es solo cuestión de usar herramientas de línea de comandos como ps
y kill
.
En este artículo, aprenderás comandos para localizar procesos en ejecución y erróneos, terminar procesos en ejecución, encontrar procesos en segundo plano y mucho más en cualquier sistema operativo Linux.
Al final del artículo, estarás administrando procesos basados en números de identificación de proceso (PIDs) desde la línea de comandos como un profesional de Linux. Sigue leyendo para aprender todo sobre los comandos de administración de procesos en Linux!
Prerrequisitos
Este artículo será un recorrido sobre cómo administrar procesos en Linux. Si quieres participar, necesitarás lo siguiente:
- A Linux host, which can be a virtual machine or a physical machine.
- Para probar los ejemplos de PowerShell, instala PowerShell 7.1.1 en un host Linux.
- A non-root user account. While root access is not required, there will be an example where the root user can kill the running process of another user.
La distribución de Linux que elijas usar es decisión tuya. Este artículo se basará en Ubuntu 20.04 LTS. Sin embargo, los comandos son estándar para el sistema operativo Linux.
¿Listo para empezar? Bien, ¡vamos a sumergirnos!
Administración de procesos en Linux
En ocasiones, es posible que te encuentres en una situación en la que necesites detener un proceso en ejecución en un sistema Linux. Por ejemplo, puede que tengas un script de bash que se ejecuta según una programación. Ese script de bash está configurado para ejecutarse como otro usuario a través de un trabajo de cron (programador de procesos de Linux).
A veces, este script genera procesos erróneos que pueden hacer que el script falle. ¿Cómo puedes matar esos procesos erróneos sin reiniciar el sistema o detener el script?
En las siguientes secciones, aprenderás sobre los comandos utilizados para localizar y terminar o matar procesos en un sistema Linux. Cada sección se basará en la anterior. Aprenderás sobre los comandos ps
, top
, pgrep
, kill
y pkill
, todos nativos de Linux.
Como bonificación, se incluyen los comandos equivalentes en PowerShell Get-Process
y Stop-Process
si no te gusta usar comandos nativos de Linux.
Herramientas para localizar procesos
Antes de matar un proceso, debes localizar el proceso correcto. El PID único permite un objetivo preciso. Sigue leyendo para aprender cómo localizar los procesos correctos para terminarlos.
Usando el comando ps
para mostrar información de los procesos.
El comando ps
o Estado del Proceso muestra información relacionada con los procesos activos en un sistema Linux. Puedes ubicar un proceso en ejecución e incluso procesos en segundo plano con ps
.
El comando ps
mostrará, por defecto, todos los procesos para la identificación efectiva del usuario (EUID) del usuario actual. Ejecutar el comando ps
, como se muestra a continuación, devolverá todos los procesos en ejecución que tu usuario puede terminar.

bkindle
.Encontrar información detallada del proceso usando el comando top
¿Qué pasa si quieres encontrar información constantemente actualizada sobre los procesos en ejecución y las métricas del sistema? En ese caso, puedes usar el comando top
. A diferencia de ps
, el comando top
actualiza la información de los procesos en la pantalla en un intervalo establecido.
Cuando ejecutas el comando top
, verás más que solo un PID. Junto con los detalles del proceso, se incluyen porcentajes de CPU y memoria, valores Nice (prioridad de programación de CPU), y la prioridad del proceso (PR) establecida por el kernel de Linux.
Para un administrador de sistemas nuevo o experimentado, el comando top
suele ser la herramienta principal para gestionar recursos y procesos vitales del sistema. Como se muestra a continuación, la salida del comando top
muestra más información de los procesos que el comando ps
, incluyendo métricas generales del sistema.

top
command on Ubuntu Desktop 20.04 LTS showing all running PID’s.htop
es una variante mejorada de top
que incluye varias mejoras, como una salida de terminal con colores.
Supongamos que deseas inspeccionar los recursos de memoria o CPU que un proceso está consumiendo. En ese caso, puedes usar el interruptor p
de top
como se muestra a continuación.

Tal vez necesites mostrar todos los procesos en ejecución para un nombre de usuario específico. El comando top
ofrece el interruptor u
para mostrar solo los procesos de un usuario específico. Como se muestra en el ejemplo a continuación, se muestran los PIDs que coinciden solo con el ID de usuario bkindle
.

top
command displaying only processes for the user bkindle
.Localizando PIDs de procesos específicos con el comando pgrep
Originalmente un comando de Solaris, pgrep
se portó para su uso con Linux. Combinando el poder de búsqueda del comando grep
y la administración de procesos de ps
, pgrep
ofrece flexibilidad para encontrar el proceso exacto al que apuntar.
Aunque ps
muestra más información, pgrep
está diseñado para devolver solo el PID de los procesos encontrados. pgrep
ayuda a localizar el proceso utilizando los muchos parámetros de búsqueda disponibles. En el siguiente ejemplo, se muestra cómo pgrep
busca cualquier proceso que coincida con vmtoolsd
.

pgrep
to obtain all PIDs associated with vmtoolsd
.De manera similar, especifique un ID de usuario con el interruptor u
para recuperar solo los procesos asociados con ese usuario específico. Como se muestra a continuación, se devuelve solo un PID para el usuario bkindle
y el proceso vmtoolsd
.

vmtoolsd
process associated with the user bkindle
.Encontrar procesos con el cmdlet Get-Process
de PowerShell en Linux
Los comandos típicos de Linux funcionan muy bien, pero ¿sabías que PowerShell también puede administrar procesos de Linux? El cmdlet Get-Process
funciona de manera similar al comando ps
de Linux y devuelve información de los procesos. Por ejemplo, tal vez necesites encontrar todos los procesos en ejecución del usuario actual, bkindle
. Como se muestra a continuación, encuentra todos los PID (etiquetados como ID por Get-Process
) del usuario bkindle
.

Get-Process
cmdlet.Relacionado: Cómo usar PowerShell Where-Object para filtrar todas las cosas
Habiendo aprendido cómo localizar diferentes procesos, ¡continúa leyendo para descubrir todas las formas de finalizar o matar un proceso en Linux!
Finalizar procesos usando los comandos Kill en Linux
En las secciones anteriores, aprendiste cómo localizar el PID del proceso al que deseas enviar una señal de finalización utilizando comandos nativos de Linux y PowerShell. Las siguientes secciones explicarán cómo utilizar los programas kill
y pkill
, sus señales asociadas y los interruptores de línea de comando.
Señales de Linux y gestión de procesos
Las señales son el método que Linux utiliza para comunicarse con los procesos que se ejecutan en el sistema operativo. Las tres señales principales que el comando kill
utiliza para terminar procesos son:
- 1 (SIGHUP) – Termina programas interactivos y hace que los demonios (servicios en segundo plano) vuelvan a leer los archivos de configuración que utiliza el proceso.
- 9 (SIGKILL) – Obliga al proceso a salir sin realizar tareas de cierre ordenado.
- 15 (SIGTERM) – Permite que un proceso se termine de manera ordenada, como cerrar archivos abiertos al finalizar. Esta es la señal predeterminada que se utiliza cuando no se especifica ningún número al usar el comando kill.
Aunque este artículo se centra solo en las tres señales principales utilizadas para terminar procesos, hay un total de 64 señales disponibles. Usa
kill -l
para obtener la lista de señales y sus números correspondientes.
Ahora que entiendes las tres señales principales utilizadas para terminar un proceso, aprende cómo matar un proceso en las siguientes secciones.
Usando el comando kill
para terminar un proceso
En el siguiente ejemplo, utilizarás el comando kill
. Imagina por un momento que estás ejecutando una instancia de PowerShell llamada pwsh
y el PID asignado es 22687. Una forma de terminar este proceso se muestra a continuación.
- Usa
pgrep pwsh
para determinar el PID del procesopwsh
, que se utiliza en el comandokill
. - Use
kill -s TERM 22687
para terminar el procesopwsh
de manera segura. El comandoTERM
se mapea a la señal 15 (SIGTERM) y se indica utilizando el parámetros
del comandokill
. - Usa tu elección de
top
,ps
opgrep
para verificar que el PID ya no aparezca en la lista.
A continuación se muestra un ejemplo del proceso anterior desde una terminal bash de Ubuntu 20.04 LTS.

kill
and associated commands to terminate the pwsh
process.El comando
killall
terminará todos los procesos basados en su nombre en lugar del PID, lo cual puede ser bastante destructivo si se usa descuidadamente. Sin embargo, si decides usar este comando, usa la opcióni
para que el comando solicite confirmación.
Finalizar procesos por nombre con pkill
Es posible que hayas notado que el comando kill
solo funciona con IDs de proceso. Esto puede hacer que la terminación de un proceso sea un proceso complicado y de varios pasos. El comando pkill
, incluido en los paquetes procps y procps-ng, termina un proceso basado en su nombre de búsqueda.
Funcionalmente, el comando pkill
actúa como un envoltorio alrededor del programa pgrep
. El comando pkill
envía una señal especificada a cada proceso encontrado en lugar de solo listar los PID en la terminal. pkill
difiere de kill
en que pkill
solo puede usar el nombre de un proceso, no el PID.
El comando
pkill
no está disponible, de forma predeterminada, en Ubuntu 20.04 LTS. Deberás descargar e instalar la aplicación. Para hacerlo, ejecutasudo apt install mcollective-plugins-process -y
.
Para matar un proceso usando pkill
, sigue los siguientes pasos:
- Usa el comando
ps
para verificar si la aplicación nano (un editor de texto en línea de comandos) está en ejecución. Este paso es opcional, pero es una verificación de seguridad antes de matar un proceso. - Usa
pkill -9 nano
para terminar forzosamente la aplicación nano.
A continuación se muestra un ejemplo de este proceso desde una terminal bash de Ubuntu 20.04 LTS.

pkill
command to forcefully terminate the nano process.Matar un proceso con el comando Top
Cuando ejecutas el comando top
para ver los procesos en ejecución, puedes matar un proceso específico con la tecla k. Verás un mensaje interactivo que te pedirá el PID del proceso que deseas matar.
Como se muestra a continuación, ejecuta el comando top
y presiona k. Ingresa el PID que deseas matar y presiona la tecla Enter para terminar inmediatamente el PID.

top
to specify a process to terminate using the k keystroke.A continuación, ¡aprende otra alternativa a los comandos nativos de Linux usando el comando Stop-Process
de PowerShell!
Usando el comando Stop-Process
de PowerShell para terminar un proceso
Si los comandos nativos de Linux no son de tu estilo, ¡PowerShell tiene la solución! Al igual que con el comando kill
, puedes terminar procesos usando el cmdlet Stop-Process
en Linux. Una vez más, supongamos que estás ejecutando un proceso de PowerShell pwsh
.
- Encuentra el PID con
Get-Process -ProcessName 'pwsh'
y anota los PIDs a terminar. - Utiliza
Stop-Process -Id 29992,30014
para terminar los múltiples procesos obtenidos. - Utiliza
Get-Process -ProcessName 'pwsh'
y verifica que los PIDs29992
y30014
ya no estén en la lista, lo que significa que han sido terminados.
También puedes usar
Get-Process
y el métodokill
para terminar uno o varios procesos:(Get-Process -Id [PID]).Kill()
o(Get-Process -Id [PID1,2,3,4]).Kill()
.Ten cuidado al usar el parámetro
ProcessName
. Usar este parámetro se comporta de manera similar al comandokillall
y terminará todos los procesos que coincidan con los nombres proporcionados.
A continuación se muestra un ejemplo del proceso anterior desde una terminal bash de Ubuntu 20.04 LTS.

Stop-Process
to kill processes in Linux.Próximos pasos
¡Ahora deberías saber las muchas formas de encontrar y terminar procesos en Linux! Para tu próximo desafío, intenta matar procesos de forma remota usando conexiones SSH o matando procesos que puedan estar ejecutándose en contenedores.
Relacionado: Un chico de Windows en un mundo de Linux: Configuración de SSH en Linux