Administrar procesos en Linux puede parecer abrumador para un nuevo administrador del sistema (sysadmin) al principio. Pero con una pequeña explicación y demostración, aprenderá cómo encontrar y ejecutar procesos de finalización de Linux con solo usar herramientas de línea de comandos como ps
y kill
.
En este artículo, aprenderá comandos para localizar procesos en ejecución y erróneos, matar (terminar) procesos en ejecución, encontrar procesos en segundo plano y mucho más en cualquier sistema operativo Linux.
Al final del artículo, administrará procesos en función de los números de identificación de procesos (PID) desde la línea de comandos como un profesional de Linux. ¡Sigue leyendo para aprender todo sobre los comandos de gestión de procesos en Linux!
Requisitos
Este artículo será un recorrido sobre cómo administrar procesos en Linux. Si desea ser práctico, necesitará lo siguiente:
- Un host Linux, que puede ser una máquina virtual o una máquina física.
- Para probar los ejemplos de PowerShell, instale PowerShell 7.1.1 en un servidor Linux.
- Una cuenta de usuario no raíz. Si bien no se requiere acceso a la raíz, habrá un ejemplo en el que el usuario raíz puede eliminar el proceso en ejecución de otro usuario.
La distribución de Linux que elija usar depende de usted. Este artículo estará basado en Ubuntu 20.04 LTS. Sin embargo, los comandos son estándar para el sistema operativo Linux.
¿Preparado para comenzar? Bien, vamos a sumergirnos.
Gestión de Procesos en Linux
En ocasiones, puede encontrarse con un escenario en el que necesita detener un proceso en ejecución en un sistema Linux. Como ejemplo, puede tener un script de bash que se ejecuta según un cronograma. Ese script bash está configurado para ejecutarse como otro usuario a través de un cron trabajo (programador de procesos de Linux).
A veces, este script genera procesos erróneos que pueden hacer que el script falle. ¿Cómo elimina esos procesos errantes sin reiniciar el sistema o detener el script?
En las siguientes secciones, recorrerá 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 ps
, top
, pgrep
, kill
y pkill
todos los comandos nativos de Linux.
Como beneficio adicional, los comandos equivalentes de PowerShell Get-Process
y Stop-Process
se incluyen si los comandos nativos de Linux no son su estilo.
Herramientas para Localizar Procesos
Antes de eliminar un proceso, debe ubicar el proceso correcto al que apuntar. El PID único permite una orientación precisa. Siga leyendo para saber cómo ubicar los procesos correctos para la terminación.
Uso del ps
Comando para mostrar información del proceso
El estado del proceso o ps
El comando muestra información relacionada con los procesos activos en un sistema Linux. Puede localizar 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. Ejecutando el ps
El comando, como se muestra a continuación, devolverá todos los procesos en ejecución que su usuario pueda finalizar.
ps

Búsqueda de información de proceso ampliada utilizando top
Comando
¿Qué sucede si desea encontrar información constantemente actualizada sobre los procesos en ejecución y las métricas del sistema? En ese caso, puede usar el top
dominio. A diferencia de ps
, el top
El comando actualiza la información del proceso en la pantalla durante un intervalo establecido.
Cuando ejecutas el top
comando, verá algo más que un PID. Incluidos con los detalles del proceso están los porcentajes de CPU y memoria, Valores agradables (prioridad del proceso de programación de la CPU) y la prioridad del proceso (PR) establecida por el kernel de Linux.
Para un administrador de sistemas nuevo o experimentado, el top
El comando suele ser la herramienta principal para administrar procesos y recursos vitales del sistema. Como se muestra a continuación, el top
la salida del comando muestra más información del proceso que el ps
comando, incluidas las métricas generales del sistema.

htop
es una variante mejorada de top
que incluye varias mejoras, como una salida de terminal coloreada.
Supongamos que desea inspeccionar la memoria o los recursos de la CPU que consume un proceso. En ese caso, puedes usar el p
cambio de top
como se muestra a continuación.
top -p 2113

Quizás necesite mostrar todos los procesos en ejecución para un nombre de usuario específico. El top
comando ofrece el u
cambie para mostrar solo los procesos de un usuario específico. Como se ve en el siguiente ejemplo, los PID coinciden solo con el ID de usuario bkindle
se muestran.
top -u bkindle

Ubicar PID de procesos específicos con el pgrep
Comando
Originalmente un comando de Solaris, pgrep
fue portado para su uso con Linux. Combinando el poder de búsqueda del grep
comando y la gestió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 devueltos. pgrep
ayuda a localizar el proceso utilizando los muchos parámetros de búsqueda disponibles . En el siguiente ejemplo, pgrep
se muestra buscando cualquier proceso que coincida con vmtoolsd
.
pgrep vmtoolsd

Del mismo modo, especifique un ID de usuario con el u
cambie para recuperar solo los procesos asociados con ese usuario específico. Como se muestra a continuación, solo se devuelve un único PID para el usuario bkindle
y el vmtoolsd
proceso.
pgrep -u bkindle vmtoolsd

Búsqueda de procesos con Get-Process
de PowerShell en Linux
Los comandos típicos de Linux funcionan muy bien, pero ¿sabía que PowerShell también puede administrar los procesos de Linux? El Get-Process
cmdlet funciona de manera similar a Linux ps
comando y devuelve información del proceso. Por ejemplo, tal vez necesite encontrar todos los procesos en ejecución del usuario actual, bkindle
. Como se muestra a continuación, busque todos los PID (ID etiquetados por Get-Process
) del usuario bkindle
.
Get-Process -IncludeUserName |
Where-Object {$_.UserName -eq 'bkindle'} |
Select-Object -Property 'Id','UserName','ProcessName'

Relacionado:Cómo usar PowerShell Where-Object para filtrar todas las cosas
¡Habiendo aprendido cómo ubicar diferentes procesos, siga leyendo para descubrir todas las formas de terminar o eliminar un proceso en Linux!
Eliminación de procesos mediante los comandos Kill en Linux
En las secciones anteriores, aprendió cómo ubicar el PID del proceso al que desea enviar una señal de interrupción mediante los comandos nativos de Linux y PowerShell. Las siguientes secciones explicarán cómo usar el kill
y pkill
programas, sus señales asociadas y conmutadores de línea de comandos.
Gestión de señales y procesos de Linux
Las señales son el método que utiliza Linux para comunicarse con los procesos que se ejecutan en el sistema operativo. Las tres señales principales que el kill
Los comandos que se usan para terminar procesos son:
- 1 (SIGHUP):finaliza los 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 ordenadas.
- 15 (SIGTERM):permite que un proceso finalice correctamente, como cerrar archivos abiertos cuando finaliza. Esta es la señal predeterminada que se usa cuando no se especifica un número cuando se usa el comando matar.
Si bien este artículo solo se centra en las tres señales principales que se utilizan para eliminar procesos, hay un total de 64 señales disponibles. Utilice
kill -l
para obtener la lista de señales y su número correspondiente.
Ahora que comprende las tres señales principales que se utilizan para finalizar un proceso, aprenda cómo eliminar un proceso en las siguientes secciones.
Uso del kill
Comando para Terminar un Proceso
En el siguiente ejemplo, utilizará el kill
dominio. Imagine por un momento que está ejecutando una instancia de PowerShell, llamada pwsh
y el PID asignado es 22687. A continuación se muestra una forma de terminar este proceso.
- Use
pgrep pwsh
para determinar el PID para el procesopwsh
, usado en elkill
comando. - Utilice
kill -s TERM 22687
para terminar elpwsh
proceso con gracia. ElTERM
el comando se asigna a la señal 15 (SIGTERM) y se indica mediante els
parámetro delkill
comando. - Use su elección de
top
,ps
opgrep
para verificar que el PID ya no se encuentra en la lista.
A continuación se muestra un ejemplo del proceso anterior desde un terminal bash de Ubuntu 20.04 LTS.

El
killall
El comando terminará todos los procesos basados en un nombre en lugar de PID, lo que puede hacer que este comando sea bastante destructivo si se usa sin cuidado. Sin embargo, si elige usar este comando, use eli
opción para hacer que el comando pida confirmación.
Eliminación de procesos por nombre con pkill
Es posible que haya notado que el kill
El comando solo funciona con ID de proceso. Esto puede hacer que la finalización de un proceso sea un proceso complicado de varios pasos. El pkill
comando, incluido en procps y procps-ng paquetes, termina un proceso basado en un nombre buscado.
Funcionalmente, el pkill
El comando actúa como un envoltorio alrededor del pgrep
programa. El pkill
El comando envía una señal específica a cada proceso encontrado en lugar de solo enumerar los PID en la terminal. pkill
difiere de kill
en ese pkill
solo puede usar el nombre de un proceso, no el PID.
El
pkill
El comando no está disponible, de forma predeterminada, en Ubuntu 20.04 LTS. Tendrás que descargar e instalar la aplicación. Para hacerlo, ejecutasudo apt install mcollective-plugins-process -y
.
Para matar un proceso usando pkill
, realice los siguientes pasos:
- Utilice
ps
para verificar que la aplicación nano (un editor de texto de línea de comandos) se está ejecutando actualmente. Este paso es opcional, pero es una verificación de seguridad antes de eliminar un proceso. - Utilice
pkill -9 nano
para finalizar por la fuerza la aplicación nano.
A continuación se muestra un ejemplo del proceso anterior desde un terminal bash de Ubuntu 20.04 LTS.

Eliminación de un proceso con el Top
Comando
Cuando ejecutas el top
comando para ver los procesos en ejecución, puede eliminar un proceso determinado con la k pulsación de tecla Verá un mensaje interactivo que solicita el PID de un proceso para eliminar.
Como se muestra a continuación, ejecute el top
comando y presione k. Ingrese el PID que desea eliminar y presione Enter clave para terminar inmediatamente el PID.

A continuación, aprenda una alternativa más a los comandos nativos de Linux usando PowerShell Stop-Process
¡comando!
Uso de PowerShell Stop-Process
Comando para Terminar un Proceso
Si los comandos nativos de Linux no son su estilo, ¡PowerShell lo tiene cubierto! Al igual que con el kill
comando, puede terminar procesos usando el Stop-Process
cmdlet en Linux. Una vez más, imagina que estás ejecutando un PowerShell pwsh
proceso.
- Encuentre el PID con
Get-Process -ProcessName 'pwsh'
y tenga en cuenta los PID para terminar. - Utilice
Stop-Process -Id 29992,30014
para terminar los múltiples procesos devueltos. - Utilice
Get-Process -ProcessName 'pwsh'
y verifique los PID,29992
y30014
ya no están en la lista, lo que significa que han sido rescindidos.
También puedes usar
Get-Process
y elkill
método para terminar uno o varios procesos:(Get-Process -Id [PID]).Kill()
o(Get-Process -Id [PID1,2,3,4]).Kill()
.Tenga cuidado al usar el
ProcessName
parámetro. El uso de este parámetro se comporta de manera similar alkillall
comando, y matará todos los procesos coincidiendo con los nombres proporcionados.
A continuación se muestra un ejemplo del proceso anterior desde un terminal bash de Ubuntu 20.04 LTS.

Siguientes pasos
¡Ahora debería conocer las muchas formas de encontrar y finalizar procesos en Linux! Para su próximo desafío, intente eliminar procesos de forma remota utilizando conexiones SSH o eliminando procesos que pueden estar ejecutándose en contenedores.
Relacionado:Un tipo de Windows en un mundo Linux:configuración de SSH en Linux