Comando killall: terminar procesos por nombre, la señal -9 e instalar psmisc

Entorno de pruebaFamilia RHELAlmaLinux 9.8psmisc 23.4Cuenta rootDebian 12 · psmisc 23.6 Cuenta normal (ejecuta killall)
Comandos de procesos y programación de tareaskillallUbicación/usr/bin/killallVerificado el 2026-11-03

El comando killall es un comando de Linux que elige los procesos en ejecución por el nombre del programa en lugar del número de proceso (PID) y les envía una señal; si no indicas ninguna señal, envía SIGTERM (según el manual oficial). Como termina de una vez todos los procesos con el mismo nombre, primero comprobamos con pgrep y ps cuatro procesos lanzados en un servidor AlmaLinux 9 a partir de copias de sleep con otros nombres, y en los ejecutables de más de 15 caracteres solo quedaban los primeros 15 en el nombre del proceso.

Ejecutamos killall solo sobre procesos xxsleep lanzados para pruebas con una cuenta normal en un servidor Debian 12. Las cajas de resultados muestran la salida de rpm, pgrep, ps, pidof, cat y kill ejecutados con la cuenta root en un servidor AlmaLinux 9.8, y la salida de killall ejecutado en el servidor Debian 12. Los números de proceso (PID), los nombres de proceso, las rutas de los ejecutables y los nombres de cuenta se cambiaron por valores de ejemplo.

1️⃣ Instalar el comando killall

  • ↪️ El paquete psmisc y la comprobación de la versión

killall forma parte del paquete psmisc. En un servidor AlmaLinux 9.8, al comprobar con rpm a qué paquete pertenece /usr/bin/killall, apareció la versión psmisc 23.4.

rpm -qf --qf '%{NAME} %{VERSION}\n' /usr/bin/killall
psmisc 23.4

La lista de archivos del mismo paquete, vista con rpm -ql, también incluía pstree y fuser.

Si aparece [command not found], que indica que no se encuentra el comando, instala el paquete psmisc. En la familia RHEL es [dnf install psmisc], y en la familia Debian, [apt install psmisc]. El servidor Debian 12 ya tenía instalado psmisc 23.6, y killall estaba en /usr/bin/killall.

Al comprobarlo en el servidor AlmaLinux 9.8, pkill, de nombre parecido, estaba en el paquete procps-ng, y kill era un comando integrado de la shell.

2️⃣ Cómo usar el comando killall

  • ↪️ Comprobar los objetivos por nombre de proceso

La forma básica es [killall nombre del proceso]. Busca todos los procesos en ejecución con el nombre indicado y les envía una señal; si escribes varios nombres, hace lo mismo con cada uno (según el manual oficial).

Como los procesos con el mismo nombre terminan todos a la vez, primero comprueba con pgrep qué se está ejecutando con ese nombre. Copiamos sleep en una carpeta de trabajo con los nombres xxsleep-a1, xxsleep-a2 y xxsleep-longname-x1, lanzamos xxsleep-a1 dos veces para tener cuatro procesos en total y mostramos números y nombres con -l.

pgrep -l xxsleep
2141 xxsleep-a1
2142 xxsleep-a1
2150 xxsleep-a2
2155 xxsleep-longnam

En la cuarta línea, el ejecutable se llama xxsleep-longname-x1, pero el nombre del proceso estaba cortado en xxsleep-longnam.

Con -a aparece la línea de comandos completa que se ejecutó. Los dos xxsleep-a1 con el mismo nombre se distinguieron por el argumento final en segundos, 300 y 310.

pgrep -a xxsleep
2141 /root/work/xxsleep-a1 300
2142 /root/work/xxsleep-a1 310
2150 /root/work/xxsleep-a2 320
2155 /root/work/xxsleep-longname-x1 330

Para buscar solo los procesos cuyo nombre coincide exactamente, añade -x. El resultado con xxsleep-a1 fueron dos números.

pgrep -x xxsleep-a1
2141
2142

Para consultar solo los números escribiendo un nombre tal cual, usa pidof. Al buscar xxsleep-a1 aparecieron los dos números en una línea.

pidof xxsleep-a1
2142 2141

ps muestra solo los procesos cuyo nombre coincide exactamente si escribes varios nombres separados por comas después de -C.

ps -o pid,comm -C xxsleep-a1,xxsleep-a2
    PID COMMAND
   2141 xxsleep-a1
   2142 xxsleep-a1
   2150 xxsleep-a2

En el servidor Debian 12 lanzamos cuatro procesos con los mismos nombres y ejecutamos [killall xxsleep-a1]: no mostró nada y terminó con el código de salida 0. Al buscar de nuevo con pgrep, los dos xxsleep-a1 habían desaparecido y solo quedaban xxsleep-a2 y xxsleep-longname-x1. Si en lugar de un nombre escribes una ruta con una barra (/), elige los procesos que ejecutan ese archivo, sea cual sea su nombre (según el manual oficial).

Al escribir el nombre inexistente xxsleep-zz apareció una línea con [no process found] detrás del nombre, y terminó con el código de salida 1. El código de salida solo es 0 cuando se termina al menos un proceso por cada nombre indicado (según el manual oficial).

killall xxsleep-zz
xxsleep-zz: no process found

Para terminar solo un proceso cuyo número conoces, envía una señal solo a ese número con kill: Comando kill de Linux.

3️⃣ Opciones del comando killall

  • ↪️ -e y nombres de 15 caracteres, -i, -v, -u, -r

Al leer en /proc/PID/comm el nombre del proceso lanzado como xxsleep-longname-x1, solo quedaban los primeros 15 caracteres: xxsleep-longnam.

cat /proc/2155/comm
xxsleep-longnam

Ejecutamos pgrep con xxsleep-longname, de 16 caracteres.

pgrep -a xxsleep-longname

Terminó sin salida y con el código de salida 1, y al buscar de nuevo con xxsleep-longnam, de 15 caracteres, apareció ese proceso.

pgrep -l xxsleep-longnam
2155 xxsleep-longnam

Cuando killall recibe un nombre de más de 15 caracteres y hay procesos cuyo nombre completo no puede leer, toma como objetivo todos los que coinciden en los primeros 15 caracteres; con -e se salta esas entradas (según el manual oficial). En el servidor Debian 12, al escribir xxsleep-longnam, los primeros 15 caracteres, con -e y -v, aparecieron líneas que indicaban que se saltaba otros tres procesos con el nombre cortado en 15 caracteres, y terminó con [no process found].

killall -e -v xxsleep-longnam
killall: skipping partial match quota_events_un(37)
killall: skipping partial match acpi_thermal_pm(112)
killall: skipping partial match ext4-rsv-conver(246)
xxsleep-longnam: no process found

Al escribir el nombre completo xxsleep-longname-x1, tras las mismas líneas de salto apareció una línea que indicaba que se había enviado la señal a ese proceso.

killall -e -v xxsleep-longname-x1
killall: skipping partial match quota_events_un(37)
killall: skipping partial match acpi_thermal_pm(112)
killall: skipping partial match ext4-rsv-conver(246)
Killed xxsleep-longname-x1(2155) with signal 15

Con -v apareció, por cada proceso al que se envió una señal, una línea con el nombre, el número y el número de la señal.

killall -v xxsleep-a2
Killed xxsleep-a2(2150) with signal 15

-i pregunta por cada proceso si debe terminarlo. Lanzamos otra vez dos xxsleep-a1 y pasamos y y n por la entrada estándar, en ese orden: las dos preguntas aparecieron seguidas en una línea, y solo terminó el primer xxsleep-a1; el segundo siguió en marcha.

printf 'y\nn\n' | killall -i xxsleep-a1
Kill xxsleep-a1(2171) ? (y/N) Kill xxsleep-a1(2172) ? (y/N)

-u elige solo los procesos que pertenecen a esa cuenta, y si omites el nombre, el objetivo son todos los procesos de esa cuenta. Al escribir xxsleep-a1 después del nombre de la cuenta, solo se envió la señal al xxsleep-a1 que quedaba.

killall -v -u user xxsleep-a1
Killed xxsleep-a1(2172) with signal 15

-o y -y eligen por la hora de inicio, y el tiempo se escribe con un número seguido de una unidad s, m, h, d, w, M o y, como en [-o 30m].

-r lee los nombres como expresiones regulares extendidas. Al pasar el patrón ^xxsleep-a a pgrep aparecieron tres procesos que empiezan por xxsleep-a.

pgrep -l '^xxsleep-a'
2141 xxsleep-a1
2142 xxsleep-a1
2150 xxsleep-a2

-w espera, comprobando cada segundo, hasta que desaparecen todos los procesos a los que se envió la señal. Si un proceso ignora la señal o queda como zombi, puede esperar indefinidamente.

La primera tabla de abajo recoge los comandos de comprobación y las opciones de killall que se ejecutaron en este artículo; las opciones de killall que no se ejecutaron están en la segunda tabla, según el manual oficial.

📌 Comprobar procesos y killall: resultados de este artículo

ComandoTareaResultado en este artículo
pgrep -l nombreNúmero y nombre de los procesos cuyo nombre lo contieneCon xxsleep salen cuatro líneas, y el nombre largo solo se ve hasta los primeros 15 caracteres, xxsleep-longnam
pgrep -a nombreNúmero y línea de comandos completaLos dos xxsleep-a1 con el mismo nombre se distinguen por los argumentos finales 300 y 310
pgrep -x nombreSolo los números de los procesos cuyo nombre coincide exactamenteCon xxsleep-a1, dos líneas: 2141 y 2142
pidof nombreLos números que se ejecutan con ese nombre, en una líneaCon xxsleep-a1, 2142 2141
ps -o pid,comm -C nombreNúmero y nombre de los procesos cuyo nombre coincide exactamente; varios nombres separados por comasDos líneas de xxsleep-a1 y una de xxsleep-a2
cat /proc/PID/commNombre del proceso (hasta los primeros 15 caracteres)2155 es xxsleep-longnam
killall nombreSIGTERM a los procesos con ese nombreTerminaron los dos xxsleep-a1 con código de salida 0; el nombre inexistente xxsleep-zz dio no process found y código de salida 1
killall -e nombreNombres de más de 15 caracteres solo si coincide el nombre completoxxsleep-longnam dio no process found; xxsleep-longname-x1 terminó
killall -v nombreMuestra el resultado de cada proceso al que se envía la señalKilled xxsleep-a2(2150) with signal 15
killall -i nombrePide confirmación por cada proceso antes de terminarloAl introducir y y n, solo terminó el primer xxsleep-a1
killall -u nombre de cuentaSolo los procesos que pertenecen a esa cuentaEscrito junto con un nombre, solo terminó el xxsleep-a1 de esa cuenta
killall -9 nombreSIGKILL en lugar de SIGTERMKilled xxsleep-a2(2173) with signal 9

📎 Otras opciones: según el manual oficial

OpciónTarea
-I, --ignore-caseCompara los nombres sin distinguir mayúsculas y minúsculas
-g, --process-groupSeñal al grupo de procesos en lugar de al proceso (una vez por grupo)
-l, --listLista de nombres de señales conocidas
-n, --ns PIDSolo procesos del mismo espacio de nombres PID que ese PID; por defecto, todos los espacios de nombres
-o, --older-than tiempoSolo procesos iniciados antes de ese tiempo (unidades s, m, h, d, w, M, y)
-q, --quietNo avisa aunque no haya terminado ningún proceso
-r, --regexpLee los nombres como expresiones regulares extendidas
-s, --signal señalSeñal que se envía en lugar de SIGTERM
-V, --versionMuestra la información de la versión
-w, --waitEspera hasta que desaparecen todos los procesos a los que se envió la señal
-y, --younger-than tiempoSolo procesos iniciados después de ese tiempo
-Z, --context patrónSolo procesos cuyo contexto de seguridad coincide con el patrón de expresión regular extendida; se escribe antes que los demás argumentos; el nombre se puede omitir

🔲 Simulador del comando killall

El simulador de abajo empieza con una lista de los cuatro procesos xxsleep más el xxsleep-a2 de la cuenta de ejemplo user1. Pulsa los chips para comparar qué líneas desaparecen de la lista con [killall -v], [-i] y [-u]; los mensajes de salida de killall imitan la salida obtenida al ejecutarlo en el servidor Debian 12.

Simulador del comando killallpsmisc 23.4
[root@server work]#
Funciona solo dentro del navegador. La lista de la izquierda usa valores de ejemplo, y killall es una imitación que sigue los mensajes de salida obtenidos en el servidor Debian 12 y solo borra líneas de la lista.

4️⃣ Señales de killall

  • ↪️ La opción -s, killall -9 y los números de señal

La señal que se envía se escribe por nombre, como [-HUP] o [-SIGHUP], por número, como [-1], o detrás de la opción -s (según el manual oficial). [killall -9 nombre del proceso] envía la señal 9, SIGKILL. SIGKILL es una señal que el proceso no puede capturar ni ignorar (según el manual oficial), así que el proceso termina sin poder hacer tareas de cierre. Por eso se envía cuando la señal por defecto, SIGTERM, no lo termina.

En el servidor Debian 12, al añadir -9 junto con -v sobre el xxsleep-a2 lanzado de nuevo, apareció una línea con el número de señal 9.

killall -9 -v xxsleep-a2
Killed xxsleep-a2(2173) with signal 9

Comprobamos los nombres y números de las señales con [kill -l]. killall también tiene una opción -l que muestra los nombres de señales que conoce.

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

Al introducir un solo número apareció solo el nombre de esa señal. El 15 que killall envía por defecto era TERM, y el 9 que se envía con -9 era KILL.

kill -l 15
TERM
kill -l 9
KILL

Si escribes un nombre de señal que no está en la lista, aparece un mensaje con la forma [FOO: unknown signal; killall -l lists signals.] (según el manual oficial y los mensajes del programa).

🔢 FAQ & contenido recomendado

killall es un comando del paquete psmisc, y pkill, del paquete procps-ng, el mismo que pgrep. pkill busca parte del nombre como expresión regular extendida, igual que pgrep, mientras que killall solo lee los nombres como expresiones regulares cuando añades -r (según el manual oficial).

El manual oficial de psmisc indica que en sistemas que no son Linux [killall nombre] puede no comportarse como esperas y que hay que tener especial cuidado al ejecutarlo con la cuenta de administrador. En otros sistemas, compruébalo primero en el manual de ese sistema.

Hay un límite para el número de nombres que puedes escribir a la vez: el tamaño de un entero unsigned long multiplicado por 8. Normalmente son 64 en sistemas de 64 bits y 32 en sistemas de 32 bits (según el manual oficial).

ℹ️ Aviso de afiliados
El contenido de este sitio incluye enlaces de afiliado. Cuando un visitante compra un producto o servicio a través de uno de ellos, el sitio recibe una comisión del vendedor. El importe que paga el comprador(baja durante las promociones ↓)no aumenta. Los precios, descuentos y existencias publicados corresponden al momento de redacción y pueden variar, así que confírmalos con el vendedor antes de comprar. Los productos se eligen y evalúan con criterios propios, y las comisiones no influyen en el orden ni en el contenido de las reseñas.

Deja una respuesta

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

Demuestra que eres humano: 0   +   9   =