GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo matar procesos en Linux usando kill, killall y pkill

Qué es un proceso

Un proceso, también conocido como tarea, es la forma en ejecución de un programa. Los programas se almacenan en el disco y los procesos se ejecutan en la memoria. Los procesos tienen una relación padre/hijo. Un proceso puede generar uno o más hijos. Se pueden ejecutar varios procesos en paralelo.

Listado de Procesos del Sistema

El comando de estado del proceso (ps) enumera los procesos que están asociados con su shell.

# ps [options]

Para cada proceso, el comando ps muestra el PID , el identificador del terminal (TTY ), el tiempo de ejecución acumulativo (TIME ), y el nombre del comando (CMD ). Por ejemplo, enumere los procesos que se están ejecutando actualmente en el sistema mediante el comando ps.

# ps
  PID TTY          TIME CMD
 1442 pts/1    00:00:00 sudo
 1448 pts/1    00:00:00 su
 1449 pts/1    00:00:00 bash
 1666 pts/1    00:00:00 ps

El comando ps tiene varias opciones que puede usar para mostrar información adicional del proceso.

  • -a :Imprime información sobre todos los procesos solicitados con más frecuencia, excepto los líderes de grupo de procesos y los procesos no asociados con una terminal
  • -e :Imprime información sobre cada proceso que se está ejecutando actualmente
  • -f :genera una lista completa
  • -l :Genera una lista larga
  • formato -o :Escribe información de acuerdo con la especificación de formato dada en un formato. Se pueden especificar varias opciones -o. La especificación de formato se interpreta como la concatenación separada por espacios y caracteres de todos los argumentos de opción de formato.

Listado de todos los procesos

Por ejemplo, use el 'ps -ef ‘ Comando para enumerar todos los procesos actualmente programados para ejecutarse en el sistema.

# ps -ef | more

Aquí,

  • UID :El nombre de usuario del propietario del proceso
  • PID :El número de identificación de proceso único del proceso
  • PPID :El número de identificación del proceso principal del proceso
  • STIME :La hora en que comenzó el proceso (hh:mm:ss)
  • TTY :El terminal de control del proceso. Tenga en cuenta que los procesos del sistema (demonios) muestran un signo de interrogación (?), lo que indica que el proceso se inició sin el uso de una terminal.
  • TIEMPO :El tiempo de ejecución acumulativo para el proceso
  • CMD :el nombre del comando, las opciones y los argumentos

Terminación de un proceso

Puede haber momentos en los que necesite finalizar un proceso no deseado. Es posible que un proceso haya entrado en un bucle sin fin o que se haya colgado. Puede matar o detener cualquier proceso que posea. Puede usar los siguientes dos comandos para terminar uno o más procesos:
– kill
– pkill

Los comandos kill y pkill envían señales a los procesos indicándoles que finalicen. Cada señal tiene un número, un nombre y un evento asociado. A continuación se muestran algunas de las señales más utilizadas con sus funcionalidades.

Número Nombre Descripción
1 SUSCRIBIR Recargar archivo de configuración
2 SIGINT Interrupción por teclado (ctrl+c)
9 SIGKILL proceso de eliminación
15 SIGTERM Finalice el proceso inmediatamente. (Termine un proceso de manera controlada para que sea posible la limpieza)
18 CONT SIGNO Continuar el proceso detenido con STOP
19 DETENER Detener proceso
Nota :Sin embargo, hay procesos que no deben terminarse, como el init proceso. Matar tales procesos puede resultar en un bloqueo del sistema. Un superusuario puede matar cualquier proceso en el sistema.

Terminar un proceso usando el comando kill

Puede finalizar cualquier proceso emitiendo la señal adecuada al proceso en cuestión. El comando de matar envía la señal 15, la señal de terminación, por defecto. Esta señal hace que el proceso termine de manera ordenada. El comando kill envía una señal de terminación a uno o más procesos. La sintaxis para usar el comando matar es la siguiente:

# kill [-signal] PIDs
Nota :El comando kill finaliza solo aquellos procesos que son de su propiedad. El usuario root puede usar el comando kill en cualquier proceso.

Debe conocer el PID del proceso antes de poder finalizarlo. Puede usar el comando ps o pgrep para ubicar el PID del proceso. Además, puede finalizar varios procesos al mismo tiempo ingresando varios PID en una sola línea de comando. Veamos un ejemplo de comando de matar. Mataríamos el proceso 'dormir 400' como se muestra a continuación.

# ps -ef | grep sleep
root      1337  1218  0 07:33 pts/0    00:00:00 sleep 400
# kill -9 1337
# ps -ef | grep sleep
#

Terminar un proceso usando el comando pkill o killall

Alternativamente, puede usar el comando pkill o killall para enviar una señal de finalización a los procesos.

# pkill [-options] PIDs

o

# killall [-options] PIDs

El comando pkill/killall requiere que especifique el nombre en lugar del PID del proceso. Por ejemplo, use el comando pkill para terminar el proceso de dtmail.

# pkill dtmail 
# pgrep -l mail
#

Terminación forzosa de un proceso:Señal 9

Algunos procesos ignoran la señal predeterminada 15 que envía el comando kill. Si un proceso no responde a la señal 15, puede obligarlo a terminar usando la señal 9 con el comando kill o pkill.

# kill -9 PID

o

# pkill -9 process_name
Nota :El envío de la señal 15 no necesariamente elimina correctamente un proceso. Solo si la señal es captada por el proceso, se limpia en orden y muere. Si no, simplemente muere.


Linux
  1. Cómo matar un proceso zombie en Linux

  2. Cómo encontrar y matar el proceso Zombie en Linux

  3. ¿La diferencia entre Kill, Pkill y Killall?

  4. Cómo matar procesos en ejecución en Linux

  5. ¿Cómo matar un proceso en Linux usando el comando?

Cómo encontrar y matar procesos en ejecución en Linux

Cómo localizar y matar un proceso con terminal Linux

Cómo MATAR un proceso en Linux

Master Linux Kill Process usando ps, pgrep, pkill y más

Cómo matar procesos Zombie en Ubuntu

4 formas de eliminar un proceso:kill, killall, pkill, xkill