Broken Pipe Error bei tac aus qx in CustomReadings

Begonnen von TheTrumpeter, 28 September 2018, 21:36:20

Vorheriges Thema - Nächstes Thema

TheTrumpeter

Seit dem Update auf stretch sind wohl meine greps in den "CustomReadings" soviel langsamer geworden, dass ich sie so nicht mehr verwenden kann.

Ich möchte sie nun auf eine Variante mit "tac" ändern, nur bekomme ich da immer Logfile-Einträge:
Zitattac: Schreibfehler: Datenübergabe unterbrochen (broken pipe)

Früher habe ich verwendet (z.B.):
qx(grep '55 0. .. 31' /media/usb1/Luxor/raw.log | tail -n 1)
Neu (erzeugt die erwähnten Logfile-Einträge):
qx(tac /media/usb1/Luxor/raw.log | grep -m 1 '55 0. .. 31')

In der Shell funktioniert das problemlos ohne jegliche Meldung.

Grundsätzlich wird auch das richtige ins CustomReading geschrieben, aber zusätzlich kommt es zu dem Logfile-Eintrag.

Folgende in der Shell nicht so performante Variante habe ich auch versucht, da bekomme ich eine andere Fehlermeldung:
{qx(awk '/55 0. .. 31/{k=$0}END{print k}' /media/usb1/Luxor/raw.log)}
Hier lautet der Fehler:
Zitatawk: 1: unexpected character '.'

Kann ich die Logfile-Einträge irgendwie unterdrücken oder hat jemand eine bessere Lösung für mein "grep"?
(Ich möchte eine Datei mit bis zu 20MB durchsuchen und die letzte Zeile mit dem Treffer ausgeben...)
FHEM auf RPi3, THZ (LWZ404SOL), RPII2C & I2C_MCP342x (ADCPiZero), PowerMap, CustomReadings, RPI_GPIO, Twilight, nanoCUL (WMBus für Diehl Wasserzähler & Regenerationszähler für BWT AqaSmart), ESPEasy, TPLinkHS110

TheTrumpeter

#1
Ein Unterdrücken der Fehlermeldung im tac mittels
2>/dev/null
Also insgesamt
tac /media/usb1/Luxor/raw.log 2>/dev/null | grep -m 1 '55 0. .. 31'
funktioniert erstmal.

Schön ist das nicht, hat jemand eine bessere Idee?
FHEM auf RPi3, THZ (LWZ404SOL), RPII2C & I2C_MCP342x (ADCPiZero), PowerMap, CustomReadings, RPI_GPIO, Twilight, nanoCUL (WMBus für Diehl Wasserzähler & Regenerationszähler für BWT AqaSmart), ESPEasy, TPLinkHS110