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.