El comando pkill en Linux: enviar señales a procesos por nombre

Introducción

En la administración de sistemas Linux, gestionar procesos es una tarea cotidiana. A veces es necesario detener, reiniciar o enviar una señal específica a un grupo de procesos que comparten el mismo nombre. El comando pkill permite hacerlo de forma rápida y segura, evitando tener que buscar el PID manualmente.

¿Qué es pkill?

pkill pertenece al paquete procps y funciona como una interfaz amigable de kill. En lugar de especificar el número de proceso (PID), se indica un patrón que coincide con el nombre del ejecutable o con otros atributos como el usuario, la terminal o el grupo. Internamente, pkill utiliza pgrep para localizar los PIDs y luego envía la señal indicada.

Sintaxis básica

La forma más simple es:

pkill [opciones] <señal> <patrón>

Si se omite la señal, se envía por defecto SIGTERM (15). Algunas opciones útiles son:

  • -u usuario: filtro por propietario.
  • -t tty: filtro por terminal.
  • -n: selecciona el proceso más reciente que coincida.
  • -o: selecciona el proceso más antiguo.
  • -v: invierte la coincidencia (excluye el patrón).
  • -f: coincide con la línea completa de comando, no solo con el nombre del ejecutable.

Señales comunes

Las señales se pueden indicar por número o por nombre. Las más usadas en pkill son:

  • SIGTERM (15): solicita finalización ordenada.
  • SIGKILL (9): finaliza el proceso de forma inmediata, sin posibilidad de captura.
  • SIGHUP (1): suele usarse para recargar configuraciones de daemons.
  • SIGINT (2): simula la pulsación de Ctrl+C.
  • SIGSTOP (19): detiene el proceso; puede continuarse con SIGCONT.

Ejemplos prácticos

    • Finalizar todos los procesos llamados firefox:
pkill firefox
    • Enviar SIGHUP a los procesos de sshd pertenecientes al usuario admin:
pkill -u admin -HUP sshd
    • Detener el proceso más reciente que coincida con backup.sh:
pkill -n -f backup.sh
    • Reiniciar un servicio enviando SIGUSR1 a todos los procesos cuyo nombre contenga nginx:
pkill -USR1 nginx

Precauciones y mejores prácticas

Aunque pkill es potente, su uso descuidado puede afectar al sistema. Se recomienda:

  • Primero ejecutar pgrep con el mismo patrón para ver qué PIDs van a ser afectados.
  • Evitar usar comodines demasiado amplios como pkill *; podría intentar matar procesos críticos.
  • En entornos de producción, considerar el uso de sudo solo cuando sea necesario y registrar las acciones en un log.
  • Recordar que SIGKILL no permite una limpieza adecuada; úsalo solo cuando SIGTERM no haya funcionado.

Conclusión

El comando pkill simplifica la señalización de procesos por nombre, ahorrando tiempo y reduciendo la posibilidad de errores al buscar PIDs manualmente. Conociendo su sintaxis, las señales más habituales y aplicando buenas prácticas, cualquier administrador de Linux puede gestionar procesos de forma eficiente y seguro.