Razones para verse en la necesidad de terminar manualmente un proceso en ejecución sobran:
- Por morbo de hacerlo por primera vez – estás asintiendo porque ya lo hiciste o ansías hacerlo.
- Porque el proceso está “colgado”
- Porque el proceso está consumiendo los recursos del equipo.
- Porque el proceso está planteado para ejecutar por tiempo indefinido y esta es la forma de detenerlo.
- etc.

Para tales efectos, Linux -Windows y Mac tienen su equivalente, en esta crónica me enfocaré únicamente en la versión de linux- posee un comando: kill.
No ahondaré en las múltiples opciones que tiene el comando; la sintaxis básica para detener un proceso con esta herramienta es:
kill -9 PID
Donde -9 es la señal para terminar el proceso, y PID debe ser sustituido por el PID dado por el sistema al proceso en turno. Veamos el siguiente ejemplo:

Se aprecia en la captura de pantalla que hay más de un proceso httpd ejecutando. Dejando de lado el porqué existen estas instancias, para fines prácticos, digamos que deseo detener manualmente el segundo de la lista, cuyo PID es 10205. El comando para realizar esta operación sería:
kill -9 10205

Ejecutado el comando, al volver a consultar la lista de procesos vemos que en efecto, el proceso con PID 10205 se ha ido:

Si se desea hacer esta misma operación para más de un proceso, el comando kill permite dar una lista de PIDs, como sigue:
kill -9 PID1 PID2 PID3 PID4 ... PIDn
Por ejemplo, el comando:
kill -9 10206 10207 10209
Terminaría los procesos httpd 2, 3 y 4 de la lista remanente.
Bastante sencillo y fácil de recordar, sin embargo, si la lista de procesos incrementa su longitud y si tienes que hacerlo varias veces, recuperar PID por PID y construir el comando una vez tras otra terminará por gastar la magia detrás del poder de detener procesos.
Podrías optar por hacer un script que busque los procesos, obtenga la lista de PIDs y construya el comando, eso implicaría conocer la combinación de comandos por pipes y algunas otras herramientas que te den esa posibilidad… o usar pkill.
Si tu deseo es detener todas las instancias de un mismo proceso sin importar su PID, pkill es lo que buscas. La sintaxis del comando es:
pkill [opciones] patron
pkill utiliza un patrón como el que usarías con grep. La forma básica para detener todas las instancias de un mismo comando sería, usando las instancias de httpd del ejemplo anterior:
pkill -9 httpd

El comando causará que todas las instancias que coincidan con “httpd” sean detenidas, como se observa en la siguiente captura de pantalla, donde httpd ya no está:

La descripción de ambos comandos, kill y pkill, en esta crónica, como he descrito, ha sido la versión básica, hay mucha flexibildiad en ellos, no dejes de revisar la documentación en las man pages para más detalles.
Como el resto de las crónicas, esta fue derivada de una necesidad personal. Dejo la referencia al foro de stackoverflow donde encontré este maravilloso comando.
https://stackoverflow.com/questions/160924/how-can-i-kill-a-process-by-name-instead-of-pid







Deja un comentario