Terminar procesos con kill y killall

última modificación:

A veces un proceso se queda colgado o necesitamos detener un servicio sin pasar por su script de inicio. Para eso existen kill y killall. La diferencia es que kill actúa sobre un PID concreto y killall actúa sobre todos los procesos con un nombre determinado.

Para terminar un proceso necesitamos su PID, que obtenemos con ps o con pidof:

pidof apache2

Con el PID, enviamos la señal de terminación (SIGTERM, que da al proceso la oportunidad de cerrar ordenadamente):

kill 1234

Si el proceso no responde, podemos forzar el cierre con SIGKILL:

kill -9 1234

Con killall pasamos el nombre del proceso en lugar del PID:

killall apache2
killall -9 apache2

La diferencia entre SIGTERM y SIGKILL es importante: SIGTERM permite al proceso guardar estado y cerrar conexiones; SIGKILL lo termina de inmediato sin ninguna posibilidad de limpieza. Conviene probar siempre SIGTERM primero y reservar -9 para cuando el proceso no responde.

Para localizar el PID antes de actuar, ps y htop son los mejores puntos de partida.