6 formas de detener la ejecución de un programa en Raspberry Pi – revhardware.com

Es probable que un programa congelado que se ejecuta en una Raspberry Pi consuma memoria, energía, tiempo de CPU, espacio en la pantalla y probablemente se interponga en su camino. Si un programa está congelado, no sirve para nada, excepto para desperdiciar sus recursos. En esta guía, analicé una variedad de formas diferentes de detener la ejecución de un programa en una Raspberry Pi dependiendo de cómo se ejecute el programa (en una terminal, como un script como Python y gráficamente).

La forma más sencilla de detener la ejecución de un programa en una Raspberry Pi es abrir una terminal y utilizar el comando de eliminación con el ID de proceso del programa. Se puede encontrar el ID del proceso mediante el comando ps aux. Alternativamente, un programa de Raspberry Pi puede eliminarse usando el Administrador de tareas, que se encuentra en Accesorios en el menú de Raspberry Pi.

Opciones para finalizar un programa en Raspberry Pi

En resumen, para detener la ejecución de un programa:

  • Si no puede ver el programa que necesita terminar, use el método de ID de proceso
  • Si el programa se ejecuta dentro de otro programa (por ejemplo, un script de Python que se ejecuta dentro de Python), intente usar CTRL + C
  • Si no está seguro de cuál es el programa, use un administrador de tareas

Esta guía brinda más detalles sobre cada uno de estos métodos a continuación.

1. Matar el programa usando su ID de proceso

Cada programa que se ejecuta en una Raspberry Pi tiene un número de ID asociado, un ID de proceso (PID). Una vez que encuentre este PID, puede usarlo para terminar el proceso usando el comando kill en la terminal Raspberry Pi.

Para detener la ejecución de un programa en una Raspberry Pi, siga los pasos a continuación:

Paso 1: abre una nueva ventana de terminal

Abra una nueva ventana de terminal en su Raspberry Pi.

Incluso si su terminal está atascado ejecutando un programa, podrá abrir una segunda ventana que usaremos para arreglar la primera. (Esto me sucedió antes: congelé mi terminal ejecutando un programa que nunca finalizó, y luego tuve que averiguar cómo abrir otro terminal para solucionarlo; afortunadamente, la interfaz gráfica de Raspberry Pi hace que sea fácil abrir un segundo)

Paso 2: encuentre el ID del proceso

Necesitamos usar esta nueva ventana de terminal para encontrar el ID del proceso.

Escriba el siguiente comando en la terminal para obtener una lista de todos los procesos que se ejecutan en su Raspberry Pi: ps aux

Salida de ps aux con mi programa listado contra el ID de proceso 1971

Busque el nombre del programa que desea terminar en el lado derecho. Si es un programa de Python que desea terminar, el programa podría llamarse python en lugar del nombre del programa. Mire la imagen a continuación donde estoy usando la terminal para encontrar un programa que escribí que está atascado en un bucle infinito.

Ahora busque el número correspondiente en la segunda columna de la izquierda. Este número es el ID del proceso (o pid). Este es el número que le vamos a dar al comando kill para detener la ejecución del programa.

Paso 3: use el comando matar para detener la ejecución del programa

Ahora que conocemos el ID del proceso (pid), podemos enviarlo al comando kill y detener la ejecución del programa.

En la ventana de la terminal, escriba el siguiente comando (sustituya el número de pid del paso anterior): sudo kill -9 pid

Usar el comando kill termina el programa

Si se le solicita una contraseña, escriba la contraseña de su cuenta de «superusuario» de Raspberry Pi (por defecto, es raspberry).

Este comando le dice al sistema operativo Raspberry Pi que envíe una señal de «nivel 9» a un proceso; esta señal obligará al programa a terminar inmediatamente. Puede encontrar más detalles sobre los diferentes niveles de señal aquí.

2. Matar el programa basado en su nombre

Un programa que se ejecuta en Raspberry Pi se puede detener si conoce el nombre del proceso subyacente del programa. A menudo, el nombre del proceso es el mismo que el nombre del programa, pero comúnmente en Raspberry Pi este no es el caso; si está ejecutando un programa dentro de Python, por ejemplo, el nombre del proceso será python en lugar del nombre del script/programa que está ejecutando.

Si conoce el nombre del programa que se está ejecutando, puede usar la terminal para detener la ejecución del programa. Los pasos para hacer esto son:

  • Abre una nueva terminal
  • Escriba este comando: sudo ps aux | grep -i nombre_del_programa
  • Encuentre el ID del proceso (este es el primer número de la salida)
  • Escriba este comando: sudo kill -9 process_ID
  • Este es el mismo proceso que usar el comando kill solo, excepto que con una forma diferente de encontrar la ID del proceso.

    3. Usa CTRL C

    Enviar «CTRL C» a un programa es similar a usar el comando matar, aunque con una prioridad más baja (utilicé el nivel 9 anterior y CTRL C es el nivel 2). Esto le pregunta amablemente al programa si puede salir, y la mayoría de las veces un programa cumplirá.

    Para detener la ejecución de una secuencia de comandos de Python, use CTRL C seleccionando la ventana en la que se ejecuta la secuencia de comandos de Python y presione CTRL y C en el teclado. Esto le indicará a Python que deje de ejecutar el script, incluso si está atascado en un bucle infinito o esperando una entrada. Presionar CTRL C funcionará si está conectado a su Raspberry Pi de forma remota mediante ssh o vnc.

    Envío de CTRL C a un programa. Tenga en cuenta que el programa continúa ejecutándose después de recibir el comando para detener

    CTRL C también funciona en otras aplicaciones, aunque generalmente es mejor en aplicaciones de terminal que están atascadas en un bucle infinito o esperando una entrada. Nunca he tenido problemas para usar CTRL C cuando me conecto de forma remota a mi Raspberry Pi (por lo que se puede usar incluso si no tiene un teclado conectado.

    4. Usa el administrador de tareas para enviar una señal de muerte

    El sistema operativo Raspberry Pi incluye un administrador de tareas gráfico que se puede usar para un comando de eliminación de programas que se ejecutan en el Pi. Funciona de manera similar a su contraparte de Windows, incluida una ventana gráfica que enumera todos los programas que se ejecutan en Raspberry Pi y la cantidad de uso de CPU y memoria que consume cada programa.

    Usar el administrador de tareas es mejor para los programas gráficos que están congelados o atascados, como un navegador web. Descubrí que es más rápido que abrir una terminal y encontrar la identificación del proceso. En el siguiente ejemplo, uso el administrador de tareas para terminar mi programa de saludo infinito.

    Siga los pasos a continuación para usar el administrador de tareas para finalizar un programa que se ejecuta en Raspberry Pi:

    Paso 1: Abra el administrador de tareas en Accesorios

    Haga clic en el icono de Raspberry Pi y haga clic en el menú Accesorios. Luego haga clic en Administrador de tareas.

    Ubicación del Administrador de tareas en Raspberry Pi

    Paso 2: Encuentra el programa que se está ejecutando

    Se presentará una lista de programas que se ejecutan en su Raspberry Pi en el administrador de tareas. Encuentre el que desea dejar de ejecutar.

    Paso 3: Haga clic derecho en el programa y seleccione matar

    Seleccionar la opción para matar el programa es similar a usar el comando matar desde la terminal. Excepto que de esta manera puede usar un mouse para hacerlo y no tiene que preocuparse por encontrar la ID del proceso.

    Seleccione un programa para matar de la lista aquí

    5. Encuentre la ID del proceso usando el administrador de tareas de la línea de comandos

    Raspberry Pi OS también incluye un administrador de tareas al que se puede acceder desde la línea de comandos del terminal. El administrador de tareas de la línea de comandos (arriba) se puede usar para encontrar el ID del proceso para usar en el comando de eliminación.

    Usar el administrador de tareas de la línea de comandos es como una mezcla entre usar el comando kill directamente (ya que de todos modos tienes que usarlo eventualmente) y el administrador de tareas gráfico (porque puedes ver lo que se está ejecutando en tu Raspberry Pi).

    Para usar el administrador de tareas de la línea de comandos para finalizar un programa que se ejecuta en una Raspberry Pi:

  • Abra una nueva ventana de terminal y escriba el siguiente comando: top
  • Encuentre la ID del proceso (bajo la columna PID) para el programa que desea eliminar
  • Presione CTRL C para salir de la parte superior
  • Escriba el siguiente comando para finalizar el programa: sudo kill -9 process_ID
  • Salida del comando superior, la columna PID es el ID del proceso

    He encontrado esto útil si está monitoreando de forma remota su Raspberry Pi. A menudo, cuando se monitorea de forma remota, no tiene una interfaz gráfica disponible, pero aún desea las estadísticas de rendimiento para su Pi (CPU, uso de memoria, etc.). El uso de top le proporciona esta información junto con la ID del proceso para eliminar los programas errantes.

    Si está monitoreando su Raspberry Pi de forma remota, escribí una guía completa sobre las diferentes formas en que puede monitorear una Raspberry Pi, échele un vistazo aquí: revhardware.com/monitor-raspberry-pi

    6. Detener un servicio con systemctl

    Systemctl es un conjunto de programas de utilidad que se pueden usar para controlar los servicios que se ejecutan en segundo plano en su Raspberry Pi. Estos servicios pueden incluir ssh, monitoreo de rendimiento o incluso un servidor web si configura uno.

    Detener un servicio con systemctl es valioso si está ejecutando un servidor web en su Raspberry Pi y desea detener o reiniciar el servidor web en cualquier momento.

    Hay algunas opciones dependiendo de lo que necesites hacer:

    Opción 1: detener el servicio

    En esta opción, systemctl ordena al servicio en segundo plano que deje de ejecutarse. El comando es el siguiente:

    sudo systemctl detener el servicio

    Reemplace servicio con el nombre del servicio que desea detener. Lo he usado principalmente en el servidor web apache, aunque también lo he visto en mariadb.

    Opción 2: Matar el servicio

    Similar a los otros métodos en esta guía, esta opción es enviar un comando de eliminación al servicio para que deje de ejecutarse. El comando es el siguiente:

    sudo systemctl kill -s 2 servicio

    Nuevamente, donde servicio es el nombre del servicio que desea eliminar. Nunca uso esta opción ya que el comando «detener» suele funcionar para mí. Si no funciona, uso la tercera opción.

    Opción 3: matar el servicio con un nivel superior

    Esta es la opción nuclear para detener el funcionamiento del servicio a toda costa. Por lo general, esto no se usa en los servicios, ya que probablemente estén haciendo algo importante en segundo plano. Sin embargo, si necesita hacerlo, este es el comando:

    sudo systemctl kill -s 9 servicio

    Una vez más, reemplace el servicio con el nombre del servicio que desea eliminar.

    Por lo general, usamos el «nivel» de eliminación inferior cuando detenemos un servicio, ya que podría estar haciendo algo importante en segundo plano que no podemos ver; el nivel inferior le permitirá terminar lo que está haciendo y guardar información importante antes de salir. Imagínese si se estuviera sirviendo una página web importante, el nivel inferior permitirá que el programa termine de servir la página web antes de salir.