Introducción
pkill
es una utilidad de línea de comandos que envía señales a los procesos de un programa en ejecución según ciertos criterios. Los procesos se pueden especificar con sus nombres completos o parciales, un usuario que ejecuta el proceso u otros atributos.
El pkill
es parte del procps
(o procps-ng
), que está preinstalado en casi todas las distribuciones de Linux. pkill
es un contenedor para el pgrep
que solo imprime una lista de procesos coincidentes.
pkill
permite cerrar un proceso enviando señales a través del terminal.
Este artículo cubre los conceptos básicos del pkill
en Linux.
Cómo usar el comando pkill
La sintaxis del pkill
es la siguiente:
pkill [OPTIONS] <PATTERN>
La <PATTERN>
se especifica mediante expresiones regulares extendidas.
Si se invoca sin ninguna opción, pkill
envía la señal 15
( TERM
) a los PID de todos los programas en ejecución que coinciden con el nombre especificado. Por ejemplo, para detener todos los procesos de Firefox, ejecutaría:
pkill -9 firefox
El comando devuelve 0
cuando al menos un proceso en ejecución coincide con el nombre solicitado. De lo contrario, el código de salida es 1
. Esto puede resultar útil cuando se utiliza en scripts de shell.
Para enviar una señal diferente a los procesos correspondientes, invoque el pkill
con la --signal
, seguido del nombre de la señal numérica o simbólica. Otra forma de enviar una señal es ejecutar pkill
seguido del nombre o número de la señal precedido por un guión ( -
).
Utilice el kill -l
para enumerar todas las señales disponibles.
Las señales más utilizadas son:
1
(HUP
): para recargar un proceso.9
(KILL
): para finalizar un proceso.15
(TERM
): para detener un proceso.
Las señales se pueden especificar de tres formas diferentes:
- usando un número (por ejemplo, -1)
- con el prefijo "SIG" (por ejemplo, -SIGHUP)
- sin el prefijo "SIG" (por ejemplo, -HUP).
Por ejemplo, para recargar procesos de Nginx, debe ejecutar:
pkill -HUP nginx
pkill
usa expresiones regulares para hacer coincidir los nombres de los procesos. Siempre es una buena idea utilizar el pgrep
para imprimir los trabajos correspondientes antes de enviarles señales. Por ejemplo, para enumerar todos los procesos que contienen "ssh" en sus nombres:
1039 sshd
2257 ssh-agent
6850 ssh
31279 ssh-agent
Si desea enviar una señal solo a procesos cuyos nombres son exactamente como el patrón de búsqueda, use:
pkill '^ssh$'
El carácter ( ^
) coincide con el principio de la cadena y el dólar $
al final.
De forma predeterminada, pkill
solo coincide con el nombre del proceso. -f
se usa la opción -f, el comando coincide con listas de argumentos completas. Si el comando contiene espacios, cite todo el comando:
pkill -9 -f "ping 8.8.8.8"
Use la -u
para decirle al pkill
que coincida con los procesos ejecutados por un usuario en particular:
pkill -u alice
Para especificar varios usuarios, separe sus nombres con comas:
pkill -u alice,nicole
También puede combinar opciones y patrones de búsqueda. Por ejemplo, para enviar la KILL
a todos los procesos que se ejecutan bajo el usuario "alice" y que contienen "gnome" en sus nombres, escriba:
pkill -9 -u alice gnome
Para ver solo los procesos iniciados más antiguos o más recientes, use la -n
(para el más reciente) o -o
(para el más antiguo).
Por ejemplo, para eliminar la pantalla más reciente, escriba este comando:
pkill -9 -n screen
Conclusión
El pkill
se utiliza para enviar señales a programas en ejecución según diferentes criterios.
Para obtener más información sobre el pkill
, visite la página del manual de pkill o escriba en la terminal:
man pkill