Cómo matar procesos desde la terminal de Linux

Cómo matar procesos desde la terminal de Linux

Conclusiones clave

  • Matar un proceso simplemente significa obligarlo a cerrar, y puede ser necesario cuando un proceso no responde o se comporta mal.
  • Linux y macOS tienen comandos como kill, pkill y killall que le permiten finalizar procesos ya sea por su PID o por su 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 cerrar». Aquí 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, los procesos en segundo plano asociados con su entorno de escritorio y los servicios del sistema Linux son todos procesos.

Puede agrupar los procesos en dos grupos:

  • Los procesos en primer plano 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.
  • Los procesos en segundo plano 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 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 RAM o entrar en un bucle 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 le devuelvan al símbolo del sistema.

¿Qué hace matar un proceso?

«Matar» un proceso simplemente significa «forzar el proceso a cerrar». Esto puede ser necesario si el proceso se niega a responder.

Linux proporciona los comandos kill, pkilly killallpara permitirle hacer precisamente eso. Estos comandos se pueden utilizar con cualquier tipo de proceso, gráfico o de línea de comando, en primer plano o en segundo plano.

El comando matar

Para utilizar kill, debe conocer el ID del proceso (PID) del proceso que desea finalizar. El pscomando se puede utilizar para encontrar el PID de un proceso.

Para realizar psuna búsqueda en todos los procesos, utilice la -eopción (todos los procesos). Es aconsejable canalizar la salida less, habrá bastante. Escriba 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

comando ps en una ventana de terminal

Esto le dará una lista de procesos similar a la siguiente captura de pantalla. Puede buscar hacia adelante lessusando la /tecla y puede buscar hacia atrás usando la ?tecla.

salida de ps en una ventana menos

Para centrarse en el proceso que le interesa, canalice la salida psy grepespecifique el nombre (o parte del nombre) del proceso.

ps -e | grep shutter

El comando ps se canalizó a través de grep para encontrar el proceso del obturador.

Una vez que haya localizado el PID del proceso que desea finalizar, páselo al killcomando como parámetro. Para finalizar el shutterproceso identificado por el comando anterior, use este comando:

kill 2099

comando matar en una ventana de terminal

El killcomando es un asesino silencioso: no te da ninguna información si tuvo éxito.

También funciona igual para finalizar procesos en macOS .

El comando pkill

El pkillcomando le permite eliminar un proceso (o procesos) por su nombre. No es necesario identificar el proceso por PID. Para utilizarlo pkill, proporcione un término de búsqueda que pkillse utilice para comparar con la lista de procesos en ejecución. Los procesos de comparación finalizan. Por lo tanto, debe estar seguro de haber escrito correctamente el término de búsqueda.

Como red de seguridad, puede usar el pgrepcomando antes de usarlo pkill. El pgrepcomando también acepta un término de búsqueda. Enumerará el PID de cada proceso que coincida con el término de búsqueda. Esto es seguro porque pgrepno emitirá ninguna señal de finalización para los procesos y, si escribe mal el término de búsqueda, no finalizará otro proceso por error. Puedes asegurarte de haber pensado correctamente el término de búsqueda antes de pasarlo a pkill. Ambos pkilly pgreptratan 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 su nombre. Usaremos el ps -u dave | grepcomando 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

comando ps en una ventana de terminal

Supongamos que nuestro usuario no ha hecho eso; lo único que saben es que el nombre del proceso contiene la subcadena “subq”. Lo utilizan pgreppara 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

pgrep y pkill en una ventana de terminal

Puedes usarlo pkillpara matar varios procesos a la vez. Aquí el usuario corre pgreppara comprobar cuántos procesos ha iniciado Chrome. Solían pkillmatarlos a todos. Luego verifican pgrepque hayan sido eliminados todos.

pgrep chrome pkill chrome pgrep chrome

pgrep y pkill en una ventana de terminal

Si se están ejecutando varios procesos con el mismo nombre, pero no desea eliminarlos todos, puede utilizar pgrepla -fopción (línea de comando) para identificar qué proceso es cuál. Un ejemplo simple serían dos pingprocesos. Quieres matar a uno de ellos pero no al otro. Puede utilizar sus líneas de comando para distinguirlos. Tenga en cuenta el uso de comillas para ajustar el parámetro de la línea de comando.

pgrep -f "ping 192.168.4.22" pkill -f "ping 192.168.4.22"

pgrep pkill con línea de comando ping

El comando matar a todos

Advertencia : en los sistemas operativos Solaris y OpenIndiana, el killallcomando eliminará todos los procesos que le pertenecen. ¡Si eres root o si lo has emitido, sudo killallreiniciará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 killallcomando funciona de manera similar al pkillcomando 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 completo del proceso, como se muestra:

killall shutt killall shutter

comando killall en una ventana de terminal

La -yopció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 da 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)
  • años (años)

Para finalizar un proceso llamado anaque acaba de iniciarse y dejar cualquier instancia anterior en anaejecución, puede usar los siguientes parámetros con killall, si hubiera reaccionado en dos minutos:

killall -y 2m ana

Killall con opción más joven que

La -oopció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 eliminará todas sshlas conexiones que hayan estado ejecutándose durante más de un día:

killall -o 1d sshd

comando killall en una ventana de terminal

¿Puedes matar cualquier proceso?

Estos comandos le permitirán identificar y finalizar correctamente los procesos erróneos con precisión y seguridad. Sin embargo, puede ser demasiado feliz y es completamente posible finalizar un proceso que no debería.

Sea siempre cauteloso. Primero, asegúrese de que el proceso que está a punto de finalizar 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. Continúe con la finalización del proceso una vez que esté satisfecho.

Si finaliza un proceso accidentalmente, no es el fin del mundo. El resultado más probable es que algo falla y tengas que reiniciar tu PC, o puedes perder el trabajo que has realizado en el programa asociado con el proceso que terminaste.

Comandos de Linux

Archivos

tar · pv · cat · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · look · strings · tipo · renombrar · zip · descomprimir · montar · desmontar · instalar · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · parche · convertir · rclone · triturar · srm · scp · gzip · chattr · cortar · buscar · umask · wc · tr

Procesos

alias · pantalla · arriba · nice · renice · progreso · strace · systemd · tmux · chsh · historial · at · lote · gratis · which · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · tiempo de espera · pared · · matar · dormir · sudo · su · tiempo · agregar grupo · usermod · grupos · lshw · apagar · reiniciar · detener · apagar · contraseña · lscpu · crontab · fecha · bg · fg · pidof · nohup · pmap

Redes

netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw · arping · firewalld

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *