GNU/Linux >> Tutoriales Linux >  >> Linux

¿Detener/matar un proceso desde la línea de comandos después de una cierta cantidad de tiempo?

Tengo un código Python que escucha y detecta sonidos ambientales. No es mi proyecto, lo encontré en la web (SoPaRe). Con el ./sopare.py -l comando, comienza a grabar sonidos pero en bucle infinito. Cuando quiero detenerlo, tengo que presionar Ctrl+C .

Mi propósito es detener este programa automáticamente después de 10 segundos, pero cuando hablé con el autor me dijo que el programa no tiene un límite de tiempo.

Traté de matarlo a través de kill PID , pero PID cambia cada vez que se ejecuta el programa. ¿Cómo puedo detenerlo después de un intervalo de tiempo a través de bash? ?

Alternativamente, puedo ejecutar este comando desde python con os.system() comando.

Respuesta aceptada:

La solución más simple sería usar timeout de la colección de GNU coreutils (probablemente instalado por defecto en la mayoría de los sistemas Linux):

timeout 10 ./sopare.py -l

Consulte el manual de esta utilidad para conocer más opciones (man timeout ). En sistemas que no son GNU, esta utilidad se puede instalar como gtimeout si GNU coreutils está instalado.

Otra alternativa, si GNU coreutils no está disponible, es iniciar el proceso en segundo plano y esperar 10 segundos antes de enviarle una señal de terminación:

./sopare.py -l &
sleep 10
kill "$!"

$! será el ID de proceso del proceso en segundo plano iniciado más recientemente, en este caso de su secuencia de comandos de Python.

En caso de que el tiempo de espera se utilice para otras cosas:

./sopare.py -l & pid=$!
# whatever code here, as long as it doesn't change the pid variable
kill "$pid"

Linux
  1. Uso de Stratis para administrar el almacenamiento de Linux desde la línea de comandos

  2. Informes de E/S desde la línea de comandos de Linux

  3. ¿Cómo reiniciar Icewm desde la línea de comandos?

  4. Ejecute scripts Perl/PHP desde la línea de comandos

  5. Encuentra la versión de WordPress desde la línea de comandos

Configurar un espacio de trabajo de Linux de forma remota desde la línea de comandos

Programe hardware desde la línea de comandos de Linux

Seguimiento del tiempo con Timewarrior en la línea de comandos

¿Cómo obtener la cantidad de CPU/núcleos en Linux desde la línea de comandos?

¿Cómo saber desde qué carpeta se está ejecutando un proceso?

¿Cómo obtengo mi dirección IP desde la línea de comandos?