FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: MarkusAutomaticus am 29 März 2017, 15:19:45

Titel: Mit FHEM einen Kommandozeilenbefehl für das Hostsystem absetzen
Beitrag 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
Titel: Antw:Mit FHEM einen Kommandozeilenbefehl für das Hostsystem absetzen
Beitrag von: DeeSPe am 29 März 2017, 15:27:47
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
Titel: Antw:Mit FHEM einen Kommandozeilenbefehl für das Hostsystem absetzen
Beitrag von: Thorsten Pferdekaemper am 29 März 2017, 15:31:31

"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
Titel: Antw:Mit FHEM einen Kommandozeilenbefehl für das Hostsystem absetzen
Beitrag von: igami am 29 März 2017, 15:33:37
siehe auch FHEM command types (https://fhem.de/commandref.html#command)
Titel: Antw:Mit FHEM einen Kommandozeilenbefehl für das Hostsystem absetzen
Beitrag 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
Titel: Antw:Mit FHEM einen Kommandozeilenbefehl für das Hostsystem absetzen
Beitrag von: Wuppi68 am 04 April 2017, 15:39:42
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
Titel: Antw:Mit FHEM einen Kommandozeilenbefehl für das Hostsystem absetzen
Beitrag 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
Titel: Antw:Mit FHEM einen Kommandozeilenbefehl für das Hostsystem absetzen
Beitrag von: Thorsten Pferdekaemper am 04 April 2017, 16:29:58
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
Titel: Antw:Mit FHEM einen Kommandozeilenbefehl für das Hostsystem absetzen
Beitrag von: Wuppi68 am 04 April 2017, 16:36:48
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
Titel: Antw:Mit FHEM einen Kommandozeilenbefehl für das Hostsystem absetzen
Beitrag von: Thorsten Pferdekaemper am 04 April 2017, 16:41:19
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
Titel: Antw:Mit FHEM einen Kommandozeilenbefehl für das Hostsystem absetzen
Beitrag 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.
Titel: Antw:Mit FHEM einen Kommandozeilenbefehl für das Hostsystem absetzen
Beitrag von: Thorsten Pferdekaemper am 04 April 2017, 20:31:59
...und ein kill -2 entspricht einem Strg-C, oder sehe ich das falsch?
Gruß,
  Thorsten
Titel: Antw:Mit FHEM einen Kommandozeilenbefehl für das Hostsystem absetzen
Beitrag von: Wuppi68 am 05 April 2017, 08:42:43
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 :-)
Titel: Antw:Mit FHEM einen Kommandozeilenbefehl für das Hostsystem absetzen
Beitrag von: MarkusAutomaticus am 05 April 2017, 09:34:07
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