Cómo matar procesos desde la terminal de Linux

Puntos clave
- Matar un proceso simplemente significa forzar su cierre y puede ser necesario cuando un proceso deja de responder o se comporta mal.
- Linux y macOS tienen comandos como kill, pkill y killall que le permiten finalizar procesos por su PID o nombre.
- Es importante tener cuidado al finalizar procesos y asegurarse de finalizar el correcto para evitar consecuencias no deseadas.
A veces, matar un proceso es la única forma de deshacerse de él. A pesar del duro nombre, "matar" un proceso simplemente significa "forzarlo a terminar". A continuación se explica cómo hacerlo desde la línea de comandos de Linux o macOS.
¿Qué es un juicio?
La ejecución de programas como el navegador web, los procesos en segundo plano asociados con el entorno de escritorio y los servicios del sistema Linux son todos procesos.
Puede agrupar procesos en dos grupos:
- Procesos en foco son aquellos que han sido iniciados o lanzados por un usuario. Pueden estar en una ventana de terminal o pueden ser una aplicación gráfica.
- Procesos en segundo plano Son todos los procesos que se inician automáticamente y no tienen interacción con los usuarios. No esperan aportes de los usuarios ni les presentan resultados o productos. Los procesos en segundo plano son cosas como servicios y demonios.
Si los procesos en primer plano involucran al personal del teatro y a los actores, los procesos en segundo plano son el equipo "detrás del escenario" detrás de escena.
Cuando los procesos se comportan mal o funcionan mal, pueden consumir demasiado tiempo de CPU, consumir RAM o entrar en un bucle computacional estrecho y dejar de responder. Las aplicaciones de gráficos pueden negarse a responder a los clics del mouse. Es posible que las aplicaciones de terminal nunca le devuelvan al símbolo del sistema.
¿Qué hace matar un proceso?
"Matar" un proceso simplemente significa "forzar el cierre del proceso". Esto puede ser necesario si el proceso se niega a responder.
Linux proporciona la kill
, pkill
Y killall
comandos que le permitirán hacer precisamente eso. Estos comandos se pueden utilizar con cualquier tipo de proceso, gráfico o línea de comando, en primer plano o en segundo plano.
El comando matar
Usar kill
, necesita conocer el ID del proceso (PID) del proceso que desea eliminar. EL ps
El comando se puede utilizar para encontrar el PID de un proceso.
Tener ps
buscar en todos los procesos usar el archivo -e
(todos los procesos). Tubería la salida less
Es recomendable, serán bastantes. Chico ps
Un espacio,-e
Un espacio, |
(un carácter de barra vertical), otro espacio y luego escriba less
. Presione Enter para ejecutar el comando.
ps -e | less
Esto le dará una lista de procesos similar a la captura de pantalla a continuación. Puedes buscar hacia adelante less
utilizando el /
y puedes buscar hacia atrás usando el botón ?
llave.
Para centrarse en el proceso que le interesa, conecte la salida de ps
A través de grep
y especifique el nombre, o parte del nombre, del proceso.
ps -e | grep shutter
Una vez que encuentre el PID del proceso que desea eliminar, páselo al archivo kill
comando como parámetro. para terminar el shutter
proceso identificado por el comando anterior, use este comando:
kill 2099
EL kill
el comando es un asesino silencioso: no proporciona información sobre si tuvo éxito.
También funciona de la misma manera para finalizar procesos en macOS.
El comando pkill
EL pkill
El comando le permite eliminar uno o más procesos por nombre. No es necesario identificar el proceso por PID. Usar pkill
proporcionar un término de búsqueda que pkill
utilícelo para comprobar la lista de procesos en ejecución. Se dan por finalizados los procesos de casación. Por lo tanto, debe asegurarse de haber escrito correctamente el término de búsqueda.
Como red de seguridad, puede utilizar el pgrep
comando antes de usar el comando pkill
dominio. EL pgrep
el comando también acepta un término de búsqueda. Enumerará el PID de cada proceso que coincida con su término de búsqueda. Eso es seguro por qué pgrep
no emitirá ninguna señal de finalización para los procesos y, si escribe mal el término de búsqueda, no finalizará accidentalmente otro proceso. Puedes asegurarte de haber pensado correctamente en tu término de búsqueda antes de pasarlo a pkill
. Ambos pkill
Y pgrep
Trate el término de búsqueda de la misma manera. Su tratamiento es tan similar que comparten la misma página de manual.
Supongamos que hay un proceso con "subq" en el nombre. Usaremos el ps -u dave | grep
comando para echar un vistazo detrás de escena. Puede ver que "subq" coincidirá con ese proceso y solo con ese proceso. Fue solo para que puedas ver el nombre completo del proceso.
ps -u dave | grep subq
Supongamos que nuestro usuario no hizo esto; todo lo que saben es que el nombre del proceso contiene la subcadena "subq". Ellos usan pgrep
para verificar que solo hay una coincidencia para su término de búsqueda. Luego usan ese término de búsqueda con pkill
.
pgrep subq
pkill subq
puedes usar pkill
para matar múltiples procesos a la vez. Aquí el usuario corre pgrep
para ver cuántos procesos ha iniciado Chrome. Ellos usan pkill
para matarlos a todos. Así que consultan con pgrep
que han sido todos eliminados.
pgrep chrome
pkill chrome
pgrep chrome
Si hay varios procesos ejecutándose con el mismo nombre, pero no desea eliminarlos a todos, puede usar pgrep
con el -f
Opción (línea de comando) para identificar qué proceso es cuál. Un ejemplo simple serían dos ping
procesos. Quieres matar a uno pero no al otro. Puede utilizar sus líneas de comando para distinguirlos. Tenga en cuenta el uso de comillas para encerrar el parámetro de la línea de comando.
pgrep -f "ping 192.168.4.22"
pkill -f "ping 192.168.4.22"
El comando Killall
Advertencia: En los sistemas operativos Solaris y OpenIndiana, el killall
El comando eliminará todos los procesos que le pertenecen. Si eres root o si lo tienes liberado sudo killall
¡Reiniciarás tu computadora! Durante la investigación para este artículo, este comportamiento se confirmó con la última versión de OpenIndiana Hipster 2018.10.
EL killall
el comando funciona de manera similar al comando pkill
comando pero con una diferencia específica. En lugar de pasar un término de búsqueda al comando, debe proporcionar el nombre exacto del proceso.
No puede proporcionar una coincidencia parcial con el nombre de un proceso; debe proporcionar el nombre de todo el proceso, como se muestra:
killall shutt
killall shutter
EL -y
La opción (más joven que) le permite finalizar procesos que se han estado ejecutando durante menos de un período específico. El período se expresa en números seguidos de una de estas unidades:
- s (segundos)
- m (minutos)
- horas (horas)
- d (días)
- w (semanas)
- M (meses, nota, "M" mayúscula)
- en (años)
Para matar un proceso llamado ana
que acaba de iniciarse y deja cualquier instancia previa de ana
en ejecución, puede utilizar los siguientes parámetros con killall
si hubiera reaccionado en dos minutos:
killall -y 2m ana
EL -o
La opción (más antiguo que) le permite finalizar procesos que se han estado ejecutando durante más tiempo que un período específico. Este comando matará a todos. ssh
Conexiones activas durante más de un día:
killall -o 1d sshd
¿Puedes matar algún proceso?
Estos comandos le permitirán identificar y finalizar correctamente procesos erróneos con precisión y seguridad. Sin embargo, es posible que esté demasiado feliz y es completamente posible interrumpir un proceso que no debería.
Sea siempre cauteloso. Primero, asegúrese de que el proceso que está a punto de interrumpir sea realmente el que desea. En segundo lugar, vuelva a verificar: tenga cuidado y asegúrese de que el proceso objetivo sea el que desea finalizar. Proceda a finalizar el proceso una vez que esté satisfecho.
Si matas un proceso accidentalmente, no es el fin del mundo. El resultado más probable es que algo salga defectuoso y tengas que reiniciar tu PC, o puedes perder el trabajo que hiciste en el programa asociado con el proceso que finalizaste.