A veces, matar un proceso es la única forma de deshacerse de él. A pesar del nombre severo, "matar" un proceso simplemente significa "obligarlo a abandonar". A continuación, se explica cómo hacerlo desde la línea de comandos de Linux o macOS.
¿Qué es un proceso?
La ejecución de programas como su navegador web, procesos en segundo plano asociados con su entorno de escritorio y servicios del sistema Linux son todos procesos.
Puede agrupar los procesos en dos grupos:
- Procesos de primer plano son aquellos que han sido iniciados o iniciados por un usuario. Pueden estar en una ventana de terminal o pueden ser una aplicación gráfica.
- Procesos de fondo son todos los procesos que se inician automáticamente y no tienen ninguna interacción con los usuarios. No esperan aportes de los usuarios ni les presentan resultados o resultados. Los procesos en segundo plano son cosas como servicios y demonios.
Si los procesos de primer plano son el frente del personal del teatro y los actores, los procesos de fondo son el equipo detrás del escenario "detrás de escena".
Cuando los procesos se comportan mal o funcionan mal, pueden acaparar demasiado tiempo de CPU, consumir su RAM o entrar en un ciclo computacional estrecho y dejar de responder. Las aplicaciones gráficas pueden negarse a responder a los clics del mouse. Es posible que las aplicaciones de terminal nunca lo devuelvan al símbolo del sistema.
La respuesta humana
"Matar" un proceso simplemente significa "forzar el cierre del proceso". Esto puede ser necesario si el proceso se niega a responder.
Linux proporciona
matar
,
pkill
y
Mátalos a todos
comandos para permitirle hacer precisamente eso. Estos comandos se pueden utilizar con cualquier tipo de proceso, gráfico o de línea de comandos, en primer plano o en segundo plano.
El comando de matar
Usar
matar
, debe conocer el ID de proceso (PID) del proceso que desea finalizar. los
ps
El comando se puede utilizar para encontrar el PID de un proceso.
Tener
ps
buscar en todos los procesos utilice el
-es
(todos los procesos) opción. Canalizando la salida a través
Menos
es recomendable, va a haber bastante. Tipo
ps
, un espacio,
-es
, un espacio,
|
(un carácter de tubería), otro espacio y luego escriba
Menos
. Presione Enter para ejecutar el comando.
ps -e | Menos
Esto le dará una lista de procesos similar a la siguiente captura de pantalla. Puedes buscar hacia adelante en
Menos
utilizando el
/
y puede buscar hacia atrás con la
?
llave.
Para concentrarse en el proceso que le interesa, canalice el resultado de
ps
mediante
apretón
y especifique el nombre, o parte del nombre, del proceso.
ps -e | obturador grep
Una vez que haya localizado el PID del proceso que desea finalizar, páselo al
matar
comando como parámetro. Para terminar el
obturador
proceso identificado por el comando anterior, use este comando:
matar 2099
los
matar
El comando es un asesino silencioso; no le da ningún comentario si tuvo éxito.
El comando pkill
los
pkill
El comando le permite matar un proceso (o procesos) por su nombre. No es necesario identificar el proceso por PID. Usar
pkill
proporcionas un término de búsqueda que
pkill
utiliza para comparar con la lista de procesos en ejecución. Los procesos de emparejamiento finalizan. Por lo tanto, debe estar seguro de haber escrito correctamente ese término de búsqueda.
Como red de seguridad, puede utilizar
pgrep
mando
antes de
usas el
pkill
mando. los
pgrep
El comando también acepta un término de búsqueda. Enumerará el PID de cada proceso que coincide con el término de búsqueda. Esto es seguro porque
pgrep
no emitirá ninguna señal de interrupción a los procesos, y si escribe mal el término de búsqueda, no eliminará otro proceso por error. Puede asegurarse de haber pensado correctamente el término de búsqueda antes de pasarlo a
pkill
. Ambos
pkill
y
pgrep
tratar el término de búsqueda de la misma manera. Su trato es tan similar que
compartir la misma página de manual
.
Supongamos que hay un proceso con "subq" en su nombre. Usaremos el
ps -u dave | grep
comando para echar un vistazo detrás de la cortina. Puede ver que "subq" coincidirá con ese proceso y solo con ese proceso. Eso fue solo para que puedas ver el nombre completo del proceso.
ps -u dave | grep subq
Supongamos que nuestro usuario
no tiene
hecho eso; todo lo que saben es que el nombre del proceso contiene la subcadena "subq". Ellos usan
pgrep
para comprobar que solo hay una coincidencia con el término de búsqueda. Luego usan ese término de búsqueda con
pkill
.
pgrep subq
pkill subq
Puedes usar
pkill
para matar varios procesos a la vez. Aquí el usuario corre
pgrep
para comprobar cuántos procesos ha lanzado Chrome. Ellos usan
pkill
para matarlos a todos. Luego verifican con
pgrep
que todos han sido eliminados.
cromo pgrep
pkill chrome
cromo pgrep
Si se están ejecutando varios procesos con el mismo nombre, pero no desea eliminarlos a todos, puede usar
pgrep
con el
-F
(línea de comando) opción para identificar qué proceso es cuál. Un ejemplo simple serían dos
silbido
procesos. Quieres matar a uno de ellos pero no al otro. Puede usar sus líneas de comando para distinguir entre ellos. Tenga en cuenta el uso de comillas para ajustar el parámetro de la línea de comandos.
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
Mátalos a todos
el comando será
mata todos los procesos que te pertenecen
. Si es root o si ha emitido
sudo killall
reiniciará su computadora! Durante la investigación para este artículo, este comportamiento se confirmó con la última versión de OpenIndiana Hipster 2018.10.
los
Mátalos a todos
mando
opera de manera similar
al
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 un nombre de proceso; debe proporcionar el nombre completo del proceso, como se muestra:
killall shutt
obturador killall
los
-y
(menor que) le permite eliminar procesos que se han estado ejecutando durante
Menos
que un período especificado. El período se indica en números seguidos de una de estas unidades:
- s (segundos)
- m (minutos)
- h (horas)
- d (días)
- w (semanas)
- M (meses, nota, "M" mayúscula)
- y (years)
Para matar un proceso llamado
madre
que se acaba de lanzar y deja cualquier instancia anterior de
madre
en ejecución, puede utilizar los siguientes parámetros con
Mátalos a todos
, si ha reaccionado en dos minutos:
Disminuirme a mi oa mi
los
-o
La opción (anterior a) le permite eliminar procesos que se han estado ejecutando durante más de un período especificado. Este comando matará a todos
ssh
conexiones que se han estado ejecutando durante más de un día:
killall -o 1d sshd
No seas demasiado feliz
Estos comandos le permitirán identificar y finalizar procesos erróneos con precisión y seguridad correctamente.
Sea siempre cauteloso. Primero, asegúrese de que el proceso que está a punto de eliminar sea realmente el que desea. En segundo lugar, verifique dos veces: tenga cuidado y asegúrese de que el proceso objetivo sea el que desea finalizar. Continúe con la finalización del proceso una vez que esté satisfecho.