GNU/Linux >> Linux Esercitazione >  >> Linux

Arrestare/interrompere un processo dalla riga di comando dopo un certo periodo di tempo?

Ho un codice Python che ascolta e rileva i suoni ambientali. Non è un mio progetto, l'ho trovato sul web (SoPaRe). Con il ./sopare.py -l comando, inizia a registrare suoni ma in loop infinito. Quando voglio fermarlo, devo premere Ctrl+C .

Il mio scopo è fermare questo programma automaticamente dopo 10 secondi, ma quando ho parlato con l'autore ha detto che il programma non ha un limitatore di tempo.

Ho provato a ucciderlo tramite kill PID , ma PID cambia ogni volta che viene eseguito il programma. Come fermarlo dopo un intervallo di tempo tramite bash ?

In alternativa, posso eseguire questo comando da python con os.system() comando.

Risposta accettata:

La soluzione più semplice sarebbe usare timeout dalla raccolta di GNU coreutils (probabilmente installato di default sulla maggior parte dei sistemi Linux):

timeout 10 ./sopare.py -l

Vedere il manuale di questa utility per ulteriori opzioni (man timeout ). Su sistemi non GNU, questa utility può essere installata come gtimeout se GNU coreutils è installato.

Un'altra alternativa, se GNU coreutils non è disponibile, è avviare il processo in background e attendere 10 secondi prima di inviargli un segnale di terminazione:

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

$! sarà l'ID del processo in background avviato più di recente, in questo caso del tuo script Python.

Nel caso in cui il tempo di attesa venga utilizzato per altre cose:

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

Linux
  1. In che modo Linux gestisce più separatori di percorsi consecutivi (/home////nomeutente///file)?

  2. Trova N parole più frequenti in un file con un elenco di parole di arresto dalla riga di comando?

  3. Trova la versione di WordPress dalla riga di comando

  4. Come faccio a inviare e-mail dalla riga di comando?

  5. Come ottenere il numero di CPU/core in Linux dalla riga di comando?

Programma hardware dalla riga di comando di Linux

Come installare il software dalla riga di comando di Linux

Trova il tempo di esecuzione di un comando o di un processo in Linux

Tracciare il tempo con Timewarrior alla riga di comando

Come scoprire da quale cartella è in esecuzione un processo?

Come ottengo il mio indirizzo IP dalla riga di comando?