Mit FHEM einen Kommandozeilenbefehl für das Hostsystem absetzen

Begonnen von MarkusAutomaticus, 29 März 2017, 15:19:45

Vorheriges Thema - Nächstes Thema

MarkusAutomaticus

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
FHEM 5.8 |intel NUC Core i3: Ubuntu 22.04 | z-Wave: Aeon Labs USB Stick | Jeelink (v3c): LaCrosse-Sensoren | DuoFern Stick: Rademacher Gurtwickler | Philips Hue Bridge | CUNX: HomeMatic, EnOcean-Pigator

DeeSPe

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
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

Thorsten Pferdekaemper


"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
FUIP

igami

Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

MarkusAutomaticus

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
FHEM 5.8 |intel NUC Core i3: Ubuntu 22.04 | z-Wave: Aeon Labs USB Stick | Jeelink (v3c): LaCrosse-Sensoren | DuoFern Stick: Rademacher Gurtwickler | Philips Hue Bridge | CUNX: HomeMatic, EnOcean-Pigator

Wuppi68

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
FHEM unter Proxmox als VM

MarkusAutomaticus

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
FHEM 5.8 |intel NUC Core i3: Ubuntu 22.04 | z-Wave: Aeon Labs USB Stick | Jeelink (v3c): LaCrosse-Sensoren | DuoFern Stick: Rademacher Gurtwickler | Philips Hue Bridge | CUNX: HomeMatic, EnOcean-Pigator

Thorsten Pferdekaemper

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
FUIP

Wuppi68

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
FHEM unter Proxmox als VM

Thorsten Pferdekaemper

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
FUIP

CoolTux

Ein kill -15 beendet einen Prozess sauber. Ein kill - 9 holt den Holzhammer raus und macht den Prozess platt.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Thorsten Pferdekaemper

...und ein kill -2 entspricht einem Strg-C, oder sehe ich das falsch?
Gruß,
  Thorsten
FUIP

Wuppi68

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 :-)
FHEM unter Proxmox als VM

MarkusAutomaticus

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/


Gruß
Markus
FHEM 5.8 |intel NUC Core i3: Ubuntu 22.04 | z-Wave: Aeon Labs USB Stick | Jeelink (v3c): LaCrosse-Sensoren | DuoFern Stick: Rademacher Gurtwickler | Philips Hue Bridge | CUNX: HomeMatic, EnOcean-Pigator