GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Einen Prozess nach einer bestimmten Zeit von der Befehlszeile aus stoppen/beenden?

Ich habe einen Python-Code, der Umgebungsgeräusche hört und erkennt. Es ist nicht mein Projekt, ich habe es im Internet (SoPaRe) gefunden. Mit dem ./sopare.py -l Befehl, beginnt es Sounds aufzunehmen, aber in Endlosschleife. Wenn ich es stoppen möchte, muss ich Strg+C drücken .

Mein Ziel ist es, dieses Programm automatisch nach 10 Sekunden zu stoppen, aber als ich mit dem Autor sprach, sagte er, dass das Programm keine Zeitbegrenzung hat.

Ich habe versucht, es über kill PID zu beenden , aber PID ändert sich jedes Mal, wenn das Programm ausgeführt wird. Wie kann es nach einem Zeitintervall über bash gestoppt werden ?

Alternativ kann ich diesen Befehl von Python aus mit os.system() ausführen Befehl.

Akzeptierte Antwort:

Die einfachste Lösung wäre die Verwendung von timeout aus der Sammlung von GNU Coreutils (wahrscheinlich standardmäßig auf den meisten Linux-Systemen installiert):

timeout 10 ./sopare.py -l

Weitere Optionen finden Sie im Handbuch für dieses Dienstprogramm (man timeout ). Auf Nicht-GNU-Systemen kann dieses Dienstprogramm als gtimeout installiert werden ob GNU Coreutils überhaupt installiert ist.

Wenn GNU Coreutils nicht verfügbar ist, besteht eine weitere Alternative darin, den Prozess im Hintergrund zu starten und 10 Sekunden zu warten, bevor ihm ein Beendigungssignal gesendet wird:

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

$! wird die Prozess-ID des zuletzt gestarteten Hintergrundprozesses sein, in diesem Fall Ihres Python-Skripts.

Falls die Wartezeit anderweitig genutzt wird:

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

Linux
  1. So installieren Sie Software über die Linux-Befehlszeile

  2. Wie starte ich Icewm von der Befehlszeile aus neu?

  3. N häufigste Wörter in einer Datei mit einer Stoppwortliste von der Befehlszeile aus finden?

  4. Führen Sie Perl/PHP-Skripte von der Befehlszeile aus

  5. Grundlagen der Linux-Befehlszeile – Ausführen von Befehlen über die Befehlszeile

Programmieren Sie Hardware über die Linux-Befehlszeile

Zeiterfassung mit Timewarrior auf der Kommandozeile

Suchen Sie die WordPress-Version über die Befehlszeile

Wie sende ich E-Mails von der Befehlszeile aus?

Wie erhalte ich die Anzahl der CPUs/Kerne in Linux über die Befehlszeile?

Wie finde ich heraus, aus welchem ​​Ordner ein Prozess läuft?