Hallo zusammen,
angenommen, man kann mit
arecord -f dat -d 20 -D hw:0,0 test.wav
auf dem raspi eine Audioaufnahme starten,
gibt es eine Möglichkeit aus FHEM heraus diesen Befehl abzusetzen?
Gruß
Markus
Zitat von: MarkusAutomaticus am 29 März 2017, 15:19:45
Hallo zusammen,
angenommen, man kann mit
arecord -f dat -d 20 -D hw:0,0 test.wav
auf dem raspi eine Audioaufnahme starten,
gibt es eine Möglichkeit aus FHEM heraus diesen Befehl abzusetzen?
Gruß
Markus
Ja!
Gruß
Dan
"arecord -f dat -d 20 -D hw:0,0 test.wav"
...ist der zugehörige FHEM-Befehl. Läuft auch automatisch im Hintergrund.
Gruß,
Thorsten
siehe auch FHEM command types (https://fhem.de/commandref.html#command)
Hallo zusammen,
das ist prima, dass das so einfach geht.
Also starten der Aufnahme sollte kein Problem sein.
Wie aber beenden?
In der Shell beendet man die Aufnahme wohl mit "Strg+c".
Angenommen ich würde aus FHEM ein "arecord -f dat -d 20 -D hw:0,0 test.wav" absetzen,
dann ginge doch vermutlich eine Shell auf, in deren Kontext der arecord-Prozess läuft?!
Wenn ich die Aufnahme wieder beenden möchte, müsste FHEM diese Shell doch erstmal finden,
um das "Strg+c" darin abzusetzen?!
Alternativ kann man die Aufnahme schon beim Aufruf zeitlich begrenzen.
Das möchte ich aber vermeiden, weil das Stoppen von FHEM aus flexibler wäre.
Ich bin nicht so der Linux-Held, sorry.
Vielleicht kann mir jemand auf die Sprünge helfen?
Gruß
Markus
Zitat von: MarkusAutomaticus am 04 April 2017, 15:25:28
Hallo zusammen,
das ist prima, dass das so einfach geht.
Also starten der Aufnahme sollte kein Problem sein.
Wie aber beenden?
In der Shell beendet man die Aufnahme wohl mit "Strg+c".
Angenommen ich würde aus FHEM ein "arecord -f dat -d 20 -D hw:0,0 test.wav" absetzen,
dann ginge doch vermutlich eine Shell auf, in deren Kontext der arecord-Prozess läuft?!
Wenn ich die Aufnahme wieder beenden möchte, müsste FHEM diese Shell doch erstmal finden,
um das "Strg+c" darin abzusetzen?!
Alternativ kann man die Aufnahme schon beim Aufruf zeitlich begrenzen.
Das möchte ich aber vermeiden, weil das Stoppen von FHEM aus flexibler wäre.
Ich bin nicht so der Linux-Held, sorry.
Vielleicht kann mir jemand auf die Sprünge helfen?
Gruß
Markus
Hallo Markus,
dann kannst Du wahrscheinlich am einfachsten zum beenden ein
"killall arecord" schicken ... es werden aber alle Prozesse mit dem Namen abgeschossen
Hallo Wuppi68,
Danke für deine schnelle Antwort!
Lässt ein solches "killall..." dem Prozess überhaupt eine Chance, die Sound-Datei noch sauber zu schließen?
Gruß
Markus
Wenn Strg-C das tut, dann tut killall das auch. Es macht auch nichts anderes, zumindest wenn man es ohne weitere Optionen aufruft.
Gruß,
Thorsten
Zitat von: MarkusAutomaticus am 04 April 2017, 16:10:19
Hallo Wuppi68,
Danke für deine schnelle Antwort!
Lässt ein solches "killall..." dem Prozess überhaupt eine Chance, die Sound-Datei noch sauber zu schließen?
Gruß
Markus
bei -15 definitiv nicht :-)
schaue am besten in die manpage vom killall
Oh, sorry. Tatsächlich sendet es standardmäßig SIGTERM (15), Strg-C wäre aber SIGINT (2). Trotzdem sollte ein Programm bei SIGTERM sich aber noch normal beenden. Sicherheitshalber kann man aber tatsächlich besser ein SIGINT schicken.
Gruß,
Thorsten
Ein kill -15 beendet einen Prozess sauber. Ein kill - 9 holt den Holzhammer raus und macht den Prozess platt.
...und ein kill -2 entspricht einem Strg-C, oder sehe ich das falsch?
Gruß,
Thorsten
Zitat von: CoolTux am 04 April 2017, 18:36:11
Ein kill -15 beendet einen Prozess sauber. Ein kill - 9 holt den Holzhammer raus und macht den Prozess platt.
Danke hatte die beiden verbuchselt :-(
brauche ich so selten :-)
Also um meine Anfrage abzurunden:
pkill -15 -x arecord
pkill statt kill, um direkt den Namen "arecord" des Prozesses verwenden zu können.
-15 zum sauberen Beenden
für andere, die in einer ähnlichen Situation sind:
http://be-jo.net/2013/11/4-wege-einen-prozess-zu-beenden-kill-pkill-killall-xkill/ (http://be-jo.net/2013/11/4-wege-einen-prozess-zu-beenden-kill-pkill-killall-xkill/)
Gruß
Markus