HOWTO · Python

Cómo matar un proceso de Python

Aprende a detener un proceso de Python con Ctrl+C, un ID de proceso verificado o comandos de coincidencia por nombre.

En esta página

Para detener un programa de Python, pulsa primero CTRL+C en la terminal o el IDE donde se está ejecutando. Si eso no detiene el programa en primer plano, identifica su ID de proceso y usa kill para un proceso verificado. Usa killall o pkill solo cuando tengas la intención de afectar a todos los procesos coincidentes; su disponibilidad y sus reglas de coincidencia dependen del sistema operativo.

Matar un proceso de Python usando un atajo de teclado

Haz clic en la terminal o el IDE que ejecuta el programa y pulsa CTRL+C. Esto envía una interrupción al programa en primer plano. Python suele responder lanzando KeyboardInterrupt y deteniéndose, pero un programa puede manejar la interrupción o estar en código que no responde con prontitud. Guarda primero tu trabajo si el programa puede estar escribiendo archivos o actualizando datos.

Si el programa continúa, usa la terminal para identificar su proceso y elige uno de los métodos de línea de comandos siguientes. Un proceso también puede manejar o aplazar una señal de terminación; la terminación forzosa es una escalada aparte y puede perder datos sin guardar.

Matar un proceso de Python usando el nombre del proceso y el comando kill

El comando kill se dirige a un ID de proceso (PID), no a un nombre de proceso. En Linux, inspecciona la lista de procesos con ps -eo pid,comm,args y busca la fila cuyo comando y argumentos identifiquen el programa de Python que quieres detener. No copies un PID de una captura de pantalla antigua ni supongas que cada fila que contenga «python» es el objetivo correcto. Los PID pueden reutilizarse, así que verifica el candidato inmediatamente antes de enviar una señal.

En Bash, esta pequeña comprobación usa el shell actual como proceso conocido y confirma que su PID es alcanzable:

pid=$$
if kill -0 "$pid" 2>/dev/null; then
    printf 'The selected PID is available.\n'
else
    printf 'The selected PID is unavailable.\n'
fi
The selected PID is available.

La comprobación se ejecutó correctamente e imprimió el mensaje de disponibilidad mostrado arriba. kill -0 comprueba si un proceso existe y si puedes enviarle una señal; no verifica que el proceso pertenezca a Python. Sustituye el PID del shell por un candidato que hayas identificado e inspecciona de nuevo la lista de procesos antes de actuar.

En sistemas tipo Unix, kill PID envía SIGTERM por defecto, lo que pide al proceso que termine y le da la oportunidad de hacer limpieza. Por ejemplo, tras sustituir PID por el número verificado, usa kill -TERM PID. Comprueba de nuevo la lista de procesos para ver si se detuvo. Si permanece, determina el motivo antes de considerar una señal más fuerte; no trates kill -9 como un primer paso rutinario.

Matar un proceso de Python usando el nombre del proceso y el comando killall

killall selecciona procesos por nombre, por lo que un nombre amplio como python puede coincidir con más que el único script que querías detener. Revisa las coincidencias con las herramientas de listado de procesos disponibles en tu sistema y restringe el nombre cuando sea posible. Ejecuta killall python solo cuando tengas la intención de detener todos los procesos que coincidan con ese comando local.

El comando no está disponible en todas partes, y las implementaciones difieren entre sistemas tipo Unix. Consulta la página del manual local de killall antes de confiar en su coincidencia por nombre o en sus opciones de señal. En algunos sistemas, su comportamiento es diferente del comando de Linux usado habitualmente para terminar procesos.

Matar un proceso de Python usando el nombre del proceso y el comando pkill

pkill también selecciona procesos por nombre y puede enviar señales a varias coincidencias. Su patrón y sus opciones varían según la implementación. Inspecciona primero los procesos candidatos; en los sistemas que lo admiten, pgrep -a python puede mostrar los PID y las líneas de comandos coincidentes. Elige un patrón más específico u otro selector admitido si la lista incluye programas no relacionados.

Cuando las coincidencias sean exactamente los procesos que quieres detener, pkill -TERM -f 'your-specific-script.py' envía SIGTERM a los procesos cuya línea de comandos completa coincida con ese patrón en las implementaciones que admiten -f. Trata el patrón como un selector, no como garantía de una única coincidencia, y consulta man pkill en el sistema de destino. Usa un PID con kill cuando necesites dirigirte a un único proceso verificado.

Conclusión

Usa Ctrl+C para un programa de Python conectado a tu terminal, kill con un ID de proceso recién verificado para un proceso concreto, y killall o pkill solo cuando todas las coincidencias por nombre seleccionadas sean objetivos previstos. Consulta la documentación local del comando y confirma el resultado. Una señal de terminación pide a un proceso que se detenga; no garantiza la terminación inmediata ni preserva el trabajo que el programa no haya guardado.