Puede suceder que una aplicación se cuelgue, incluso si intenta reiniciarla, no sucede nada. La solución es terminar o matar el proceso.
Afortunadamente, existen varias utilidades en Linux que le permiten eliminar los procesos defectuosos.
En este artículo, le mostraremos cómo usar los kill
, killall
y pkill
para matar un proceso en Linux.
La principal diferencia entre estas herramientas es que kill
termina los procesos según el número de identificación del proceso (PID), mientras que los pkill
killall
y pkill terminan los procesos en ejecución según sus nombres y otros atributos.
Los usuarios habituales pueden utilizar Kill para sus propios procesos, pero no los que pertenecen a otros usuarios, mientras que el usuario root puede matar todos los procesos.
Matar las señales del sistema de comando
kill
, killall
y pkill
envían una determinada señal a procesos o grupos de procesos específicos. Cuando no se especifica ninguna señal, cada instrumento envía 15
( TERM
).
Las señales más utilizadas son:
1
(-HUP): para recargar un proceso.9
(-KILL): para matar un proceso.15
(-TERM): para detener correctamente un proceso.
Las señales se pueden especificar de tres formas diferentes:
- usando el número (por ejemplo, -1)
- con el prefijo "SIG" (por ejemplo, -SIGHUP)
- sin el prefijo "SIG" (por ejemplo, -HUP).
Utilice la -l
para enumerar todas las señales disponibles:
kill -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR
31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3
38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7
58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAX
O:
killall -l
HUP INT QUIT ILL TRAP ABRT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM STKFLT
CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH POLL PWR SYS
Los pasos descritos a continuación funcionarán en todas las distribuciones de Linux.
Matar procesos usando el comando Matar
kill
un proceso con el comando kill, primero debe encontrar el PID del proceso. Puede hacer esto usando diferentes comandos, como top
, ps
, pidof
y pgrep
.
Suponga que el navegador Firefox no ha respondido y necesita detener el proceso de Firefox. Para encontrar el ID del proceso, use el comando pidof
pidof firefox
El comando imprimirá todos los procesos de Firefox:
2551 2514 1963 1856 1771
Una vez que sepa que Firefox procesa los PID para terminarlos, envíe la señal TERM
kill -9 2551 2514 1963 1856 1771
Mata procesos usando el comando killall
El killall
mata todos los programas que coinciden con un nombre específico.
Utilizando el mismo escenario que antes, puede finalizar el proceso de Firefox escribiendo:
killall -9 firefox
killall
acepta varias opciones, como enviar señales a los procesos propiedad de un usuario en particular, hacer coincidir los nombres de los procesos con las expresiones regulares y el tiempo de creación. Puede obtener una lista de todas las opciones escribiendo killall
(sin argumentos) en su terminal.
Por ejemplo, para finalizar todos los procesos que se ejecutan como usuario alice, ejecute el siguiente comando:
sudo killall -u alice
Mata procesos usando el comando pkill
pkill
termina los procesos que coinciden con el patrón dado en la línea de comando:
pkill -9 firefox
No es necesario que el nombre del proceso sea una coincidencia exacta.
Con pkill
también puede enviar una señal a los procesos propiedad de un usuario en particular. Para matar solo los procesos de Firefox propiedad del usuario Alice, escriba:
pkill -9 -u alice firefox
Conclusión
Terminar programas que no responden usando los kill
, killall
y pkill
es una tarea fácil. Solo necesita saber el nombre del proceso o PID.