Hallöle,
ich finde das im Log. Ist bei mir nicht dramatisch. Fällt halt nur auf bei der Routinekontrolle. Soll ich noch was drumrum posten?
BusyBox v1.24.1 (2020-02-14 03:15:41 CST) multi-call binary.
Usage: free [-b/k/m/g]
Display the amount of free and used system memory
2020.03.10 01:30:11 1: PERL WARNING: Use of uninitialized value $free_version in substitution (s///) at ./FHEM/42_SYSMON.pm line 2268.
2020.03.10 01:30:11 1: PERL WARNING: Use of uninitialized value $free_version in numeric gt (>) at ./FHEM/42_SYSMON.pm line 2269.
2020.03.10 01:30:11 1: PERL WARNING: Use of uninitialized value $free_version in numeric gt (>) at ./FHEM/42_SYSMON.pm line 2320.
2020.03.10 01:30:14 1: PERL WARNING: Argument "13.43 0.00 5.50 79.69 1.13 0.00 0.25" isn't numeric in sprintf at (eval 2967805) line 1.
2020.03.10 01:30:14 1: PERL WARNING: Argument "5412.70 8578.39 6881.82" isn't numeric in sprintf at (eval 2967807) line 1.
BusyBox v1.01 (2020.01.08-18:26+0000) multi-call binary
Usage: free
Displays the amount of free and used system memory
2020.03.10 01:30:14 1: PERL WARNING: Use of uninitialized value $free_version in substitution (s///) at ./FHEM/42_SYSMON.pm line 2268.
2020.03.10 01:30:14 1: PERL WARNING: Use of uninitialized value $free_version in numeric gt (>) at ./FHEM/42_SYSMON.pm line 2269.
2020.03.10 01:30:15 1: PERL WARNING: Use of uninitialized value $free_version in numeric gt (>) at ./FHEM/42_SYSMON.pm line 2320.
Hallo,
Seit ich ein Update auf Fhem version 6.0 bekommen ich diese Warnung ins Log geschrieben,
dadurch wird die Log Datei sehr groß.
vielen Dank
Wolfgang
Zitat2020.03.21 12:53:07.912 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at ./FHEM/42_SYSMON.pm line 2269.
2020.03.21 12:54:07.848 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at ./FHEM/42_SYSMON.pm line 2269.
2020.03.21 12:55:07.857 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at ./FHEM/42_SYSMON.pm line 2269.
2020.03.21 12:56:07.856 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at ./FHEM/42_SYSMON.pm line 2269.
2020.03.21 12:57:07.859 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at ./FHEM/42_SYSMON.pm line 2269.
2020.03.21 12:58:07.859 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at ./FHEM/42_SYSMON.pm line 2269.
2020.03.21 12:59:07.868 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at ./FHEM/42_SYSMON.pm line 2269.
2020.03.21 13:00:07.860 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at ./FHEM/42_SYSMON.pm line 2269.
2020.03.21 13:01:07.862 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at ./FHEM/42_SYSMON.pm line 2269.
2020.03.21 13:02:07.862 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at ./FHEM/42_SYSMON.pm line 2269.
2020.03.21 13:03:07.861 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at ./FHEM/42_SYSMON.pm line 2269.
2020.03.21 13:04:07.869 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at ./FHEM/42_SYSMON.pm line 2269.
2020.03.21 13:05:07.867 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at ./FHEM/42_SYSMON.pm line 2269.
2020.03.21 13:06:07.866 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at ./FHEM/42_SYSMON.pm line 2269.
2020.03.21 13:07:07.870 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at ./FHEM/42_SYSMON.pm line 2269.
2020.03.21 13:08:07.876 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at ./FHEM/42_SYSMON.pm line 2269.
2020.03.21 13:09:07.873 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at ./FHEM/42_SYSMON.pm line 2269.
2020.03.21 13:10:07.871 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at ./FHEM/42_SYSMON.pm line 2269.
2020.03.21 13:11:07.871 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at ./FHEM/42_SYSMON.pm line 2269.
2020.03.21 13:12:07.881 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at ./FHEM/42_SYSMON.pm line 2269.
2020.03.21 13:13:07.872 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at ./FHEM/42_SYSMON.pm line 2269.
2020.03.21 13:14:07.872 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at ./FHEM/42_SYSMON.pm line 2269.
2020.03.21 13:15:07.882 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at ./FHEM/42_SYSMON.pm line 2269.
2020.03.21 13:16:07.891 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at ./FHEM/42_SYSMON.pm line 2269.
2020.03.21 13:17:07.877 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at ./FHEM/42_SYSMON.pm line 2269.
2020.03.21 13:18:07.918 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at ./FHEM/42_SYSMON.pm line 2269.
2020.03.21 13:19:07.880 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at ./FHEM/42_SYSMON.pm line 2269.
2020.03.21 13:20:07.877 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at ./FHEM/42_SYSMON.pm line 2269.
2020.03.21 13:21:07.883 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at ./FHEM/42_SYSMON.pm line 2269.
2020.03.21 13:22:07.923 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at ./FHEM/42_SYSMON.pm line 2269.
2020.03.21 13:23:07.898 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at ./FHEM/42_SYSMON.pm line 2269.
2020.03.21 13:24:07.898 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at ./FHEM/42_SYSMON.pm line 2269.
2020.03.21 13:25:07.916 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at ./FHEM/42_SYSMON.pm line 2269.
2020.03.21 13:26:07.894 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at ./FHEM/42_SYSMON.pm line 2269.
2020.03.21 13:27:07.902 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at ./FHEM/42_SYSMON.pm line 2269.
2020.03.21 13:28:07.903 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at ./FHEM/42_SYSMON.pm line 2269.
2020.03.21 13:29:07.919 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at ./FHEM/42_SYSMON.pm line 2269.
2020.03.21 13:30:07.931 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at ./FHEM/42_SYSMON.pm line 2269.
2020.03.21 13:31:07.927 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at ./FHEM/42_SYSMON.pm line 2269.
2020.03.21 13:32:07.907 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at ./FHEM/42_SYSMON.pm line 2269.
2020.03.21 13:33:07.910 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at ./FHEM/42_SYSMON.pm line 2269.
2020.03.21 13:34:07.908 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at ./FHEM/42_SYSMON.pm line 2269.
2020.03.21 13:35:07.908 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at ./FHEM/42_SYSMON.pm line 2269.
2020.03.21 13:36:07.912 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at ./FHEM/42_SYSMON.pm line 2269.
2020.03.21 13:37:07.912 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at ./FHEM/42_SYSMON.pm line 2269.
2020.03.21 13:38:07.912 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at ./FHEM/42_SYSMON.pm line 2269.
2020.03.21 13:39:07.916 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at ./FHEM/42_SYSMON.pm line 2269.
2020.03.21 13:40:07.916 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at ./FHEM/42_SYSMON.pm line 2269.
2020.03.21 13:41:07.915 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at ./FHEM/42_SYSMON.pm line 2269.
2020.03.21 13:42:07.916 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at ./FHEM/42_SYSMON.pm line 2269.
2020.03.21 13:43:07.921 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at ./FHEM/42_SYSMON.pm line 2269.
2020.03.21 13:44:07.919 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at ./FHEM/42_SYSMON.pm line 2269.
2020.03.21 13:45:07.923 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at ./FHEM/42_SYSMON.pm line 2269.
2020.03.21 13:46:07.925 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at ./FHEM/42_SYSMON.pm line 2269.
2020.03.21 13:47:07.927 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at ./FHEM/42_SYSMON.pm line 2269.
2020.03.21 13:48:07.929 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at ./FHEM/42_SYSMON.pm line 2269.
2020.03.21 13:49:07.932 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at ./FHEM/42_SYSMON.pm line 2269.
Zitatdadurch wird die Log Datei sehr groß.
57x die selbe fehler msg zu posten, finde ich wesentlich schlimmer. ;)
Hallo,
Wenn ich nur einen Eintrag gemacht hätte wehre die Antwort gewesen ist ja nur eine Warnung oder auch keine.
@eddy242
hat 8 Warnungen geschrieben und bis jetzt noch keine Antwort bekommen was der Fehler ist.
Ich habe 57x die Warnung geschrieben ( Danke fürs Zählen) und ich habe eine Antwort bekommen,
ist zwar nicht das was ich erwartet habe aber ich habe eine Antwort bekommen. ;)
Jetzt wissen wir das 8 Warnungen nicht reichen das man eine Antwort bekommt 57 aber sehr wohl.
@frank
wenn du mich Kritisierst das 57 Warnungen zu viel ist warum hast du für eddy242 keine passende Antwort für sein Problem weil der hat ja alles richtig gemacht ?
Ich habe noch eine Rechenaufgabe.
die Warnungen kommen jede Minute einmal.
Wie viele Warnungen werden am Tag ins Log geschrieben ?
Wie viele Warnungen werden im Monat ins Log geschrieben ?
Um wie viel vergrößert sich die im Monat die Log Datei ?
und das sollte man auch nicht außer acht lassen, das ist jetzt nur ein Modul bei 4 oder5 Modulen kommt einiges zusammen.
vielen Dank
mfg
Wolfgang
Hallo Wolfgang,
offenbar kein typischer Fehler, sonst würdest Du Antworten bekommen. Ich habe auch Update auf 6.0 gemacht und sysmon laufen und habe keine Einträge.
Du könntest:
featurelevel in global wieder runter setzen und testen
die Ausgabe von Version und fheminfo posten, vielleicht fällt jemandem was auf.
im Log nach Meldungen schauen ob System Module fehlen.
Gruß Otto
Hallo, Otto
Vielen Danke für die Antwort.
Ich habe es mit verschiedenen Featurelevel Probiert doch leider ohne erfolg.
Latest Revision: 21477
File Rev Last Change
fhem.pl 21337 2020-03-02 16:42:53Z rudolfkoenig
42_SYSMON.pm 17227 2018-08-29 19:58:18Z hexenmeister
System Info
ConfigType: configFile
SVN rev: 21477
OS: Linux debian 5.4.0-4-amd64 #1 SMP Debian 5.4.19-1 (2020-02-13) x86_64
Perl: 5.30.0
uniqueId: d09...
2020.03.22 12:26:29.259 1: PERL WARNING: Use of uninitialized value in localtime at fhem.pl line 3465.
2020.03.22 12:26:29.532 0: Featurelevel: 6.0
2020.03.22 12:26:29.532 0: Server started with 387 defined entities (fhem.pl:21337/2020-03-02 perl:5.030000 os:linux user:fhem pid:33235)
2020.03.22 12:26:55.113 3: BOSEST: BOSE_7C3866EC7918, WebSocket connection succeed.
2020.03.22 12:26:59.814 3: DbRep myDb - Connectiontest to database SQLite:dbname=/opt/fhem/fhem.db with user
2020.03.22 12:26:59.846 3: DbRep myDb - Index Report_Idx exists. Check ok
2020.03.22 12:26:59.848 3: DbRep myDb - Initial data information retrieved successfully - total time used: 0.0027 seconds
2020.03.22 12:26:59.857 3: DbRep myDb - Connectiontest to db SQLite:dbname=/opt/fhem/fhem.db successful
2020.03.22 12:27:17.231 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at ./FHEM/42_SYSMON.pm line 2269.
2020.03.22 12:10:38.893 1: PERL WARNING: Use of uninitialized value in localtime at fhem.pl line 3465.
2020.03.22 12:10:39.159 0: Featurelevel: 5.9
2020.03.22 12:10:39.160 0: Server started with 387 defined entities (fhem.pl:21337/2020-03-02 perl:5.030000 os:linux user:fhem pid:32728)
2020.03.22 12:10:50.678 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at ./FHEM/42_SYSMON.pm line 2269.
2020.03.22 12:10:57.371 3: DbRep myDb - Connectiontest to database SQLite:dbname=/opt/fhem/fhem.db with user
2020.03.22 12:10:57.398 3: DbRep myDb - Index Report_Idx exists. Check ok
2020.03.22 12:10:57.398 3: DbRep myDb - Initial data information retrieved successfully - total time used: 0.0035 seconds
2020.03.22 12:10:57.408 3: DbRep myDb - Connectiontest to db SQLite:dbname=/opt/fhem/fhem.db successful
2020.03.22 12:11:04.712 3: BOSEST: BOSE_7C3866EC7918, WebSocket connection succeed.
2020.03.22 12:18:21.395 1: PERL WARNING: Use of uninitialized value in localtime at fhem.pl line 3465.
2020.03.22 12:18:21.662 0: Featurelevel: 5.8
2020.03.22 12:18:21.663 0: Server started with 387 defined entities (fhem.pl:21337/2020-03-02 perl:5.030000 os:linux user:fhem pid:32981)
2020.03.22 12:18:21.942 3: DbRep myDb - Connectiontest to database SQLite:dbname=/opt/fhem/fhem.db with user
2020.03.22 12:18:22.800 3: DbRep myDb - Index Report_Idx exists. Check ok
2020.03.22 12:18:22.800 3: DbRep myDb - Initial data information retrieved successfully - total time used: 0.0057 seconds
2020.03.22 12:18:22.826 3: DbRep myDb - Connectiontest to db SQLite:dbname=/opt/fhem/fhem.db successful
2020.03.22 12:18:47.788 3: BOSEST: BOSE_7C3866EC7918, WebSocket connection succeed.
2020.03.22 12:19:09.274 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at ./FHEM/42_SYSMON.pm line 2269.
2020.03.22 12:20:09.224 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at ./FHEM/42_SYSMON.pm line 2269.
2020.03.22 12:21:09.215 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at ./FHEM/42_SYSMON.pm line 2269.
2020.03.22 12:22:09.230 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at ./FHEM/42_SYSMON.pm line 2269.
Danke
mfg Wolfgang
Hallo Wolfgang,
es wäre für Dich noch wichtig das hier zu lesen und die Hinweise vor allem für Codetags zu beachten :) https://forum.fhem.de/index.php/topic,71806.0.html
Ich denke, das Modul bekommt etwas vom System nicht, damit ist ein String "" leer und der numerische Vergleich wirft Fehler. Du kannst Deine Definition abspecken und testen, du kannst letztlich sysmon nur erstmal rausnehmen.
Am Update von FHEM selbst wird es nicht liegen, das Verhalten hatte ja offenbar sonst keiner.
Du kannst temporär und Versuchsweise eine Neuinstallation von Null testen.
Du kannst die fragliche Zeile im Modul anschauen ob Du da eine Idee ableiten kannst.
Klingt alles aufwendig, aber ich kann Dir hier nicht weiterhelfen. Wenn Du neue Erkenntnisse hast kann man Strategien entwickeln.
Gruß Otto
Hallo,
Danke für die Info, werde das weiter Beobachten.
In Zeile 2269 steht dieser Code, aber soweit reichen meine Programmierkenntnisse nicht aus um das zu verstehen.
my @speicher = SYSMON_execute($hash, 'LANG=en ' . ($free_version > 339 ? 'free -w' : 'free'));
mfg
wolfgang
Ok interessant. 8) Meine Interpretation:
Konsolenbefehl free - kannst Du im Terminal testen.
free -w gibt mir einen Hilfetext zurück. Funktioniert also bei mir nicht.
Das Folgende ist ein typisches Perl Konstrukt: Bedingung ? Rückgabe wahr : Rückgabe falsch
$free_version > 339 ? 'free -w' : 'free'
Also ab Version (welche?) 339 nimm free -w sonst nimm free
Probier das mal aus bei Dir. Mal sehen was da so passiert.
Hallo,
Ich bekomme diese Antwort.
Ist es das was du meinst
pi@debianfhem:~$ free -w
total used free shared buffers cache available
Mem: 7856604 385304 6615088 2576 122332 733880 7214900
Swap: 8082428 0 8082428
Ja genau. Also den Befehl gibt es, der gibt auch was zurück.
Versuch das Gleiche unter FHEM, in der FHEM Kommandozeile!:
{qx(free -w)}
Falls im Browser nichts zurückkommt schau ins Log.
Im Browser kommt das
total used free shared buffers cache available
Mem: 7856604 549424 6447804 2560 123352 736024 7050804
Swap: 8082428 0 8082428
das problem muss schon vorher existieren, da ja scheinbar die variable $free_version kein wert bekommen hat:
Argument "" isn't numeric in numeric gt (>)
also nach der initialisierung suchen.
Hallo,
ist das Hilfreich ?
#------------------------------------------------------------------------------
2258 # Liefert Werte fuer RAM und SWAP (Gesamt, Verwendet, Frei).
2259 #------------------------------------------------------------------------------
2260 sub SYSMON_getRamAndSwap($$) {
2261 my ($hash, $map) = @_;
2262
2263 if($hash->{helper}->{excludes}{'ramswap'}) {return $map;}
2264
2265 #my @speicher = qx(free -m);
2266 #my @speicher = SYSMON_execute($hash, "LANG=en free");
2267 my $free_version = SYSMON_execute($hash, 'free -V');
2268 $free_version =~ s/\D//g;
2269 my @speicher = SYSMON_execute($hash, 'LANG=en ' . ($free_version > 339 ? 'free -w' : 'free'));
was bekommst du auf der console mit:
free -V
Hallo
pi@debianfhem:~$ free -V
free from procps-ng UNKNOWN
In der Fhem Kommandozeile kommt
free from procps-ng UNKNOWN
free from procps-ng 3.3.12
so sieht das bei mir aus.
ist dein os up to date?
als "würgaround" könntest du zb vor zeile 2269 eine zeile einfügen:
$free_version = 340 if($free_version eq "");
dann natürlich "attr global exclude_from_update" entsprechend setzten, damit sysmon nicht überschrieben wird.
anschliessend save und neustarten.
welches os hast du eigentlich, dass dort version "unknown" angezeigt wird?
debian buster, oder etwas exotisches?
auf welcher hardware?
Hallo,
Habe ein wenig im Netz gesucht aber auch nichts gefunden, warum das so ist weiß ich nicht.
Das System läuft sonst ganz rund.
Ich werde dein Workaround eintragen und Beobachten.
Vielen Dank für die Unterstützung
mfg
wolfgang
Motherboard ASRock Q1900M
Processor Intel(R) Celeron(R) CPU J1900 @ 1.99GHz
Memory 8GiB System Memory
Linux Buster 5.4.0-4-amd64 x86_64
Hallo zusammen,
ich würde gerne die lebhafte Diskussion nutzen, um nochmals kurz auf Post #1 einzugehen. Die Situation ist so, dass SYSMON per ssh eine Remoteabfrage auf 2 verschiedene QNAP NAS Systeme macht. Im Terminal macht free dort folgende Ausgaben. Beide free-Versionen von busybox unterstützen weder -v noch -w.
QNAP älteres Modell
[~] # free
total used free shared buffers
Mem: 255596 233140 22456 0 3468
Swap: 530124 233440 296684
Total: 785720 466580 319140
[~] # free -w
BusyBox v1.01 (2020.01.08-18:26+0000) multi-call binary
Usage: free
Displays the amount of free and used system memory
[~] #
QNAP moderneres Modell
[~] # free -w
BusyBox v1.24.1 (2020-02-14 03:15:41 CST) multi-call binary.
Usage: free [-b/k/m/g]
Display the amount of free and used system memory
[~] # free
total used free shared buffers cached
Mem: 15371348 14295156 1076192 73732 340192 6607648
-/+ buffers/cache: 7347316 8024032
Swap: 24542452 2732312 21810140
[~] # free -v
BusyBox v1.24.1 (2020-02-14 03:15:41 CST) multi-call binary.
Usage: free [-b/k/m/g]
Display the amount of free and used system memory
[~] #
Ich hätte da vielleicht einen "bösen" Hack:
Idee: Man packt ein alternatives free in einen Pfad aus dem Suchpfad:
echo $PATH
/usr/sbin:/usr/bin:/sbin:/bin
free liegt in /usr/bin (which free)
Den folgenden Script Code kann man einfach in die Kommandozeile fallen lassen, der erzeugt mit "hereDoc" das Script und macht es ausführbar.
free="/usr/sbin/free"
cat <<EOF > $free
#!/bin/sh
if [ "\$1" = "-V" ]
then
echo "free from procps-ng 3.3.9"
else
/usr/bin/free
fi
EOF
chmod +x $free
Danach muss man sich neu anmelden um die Hash Table der Shell neu zu erstellen.
Test mit which free
free -V liefert ab sofort einen Rückgabe Wert und ansonsten die normalen Werte.
Das ganze bleibt bei busybox nicht dauerhaft - ich weiß :-X
Besser wäre der Hexenmeister ruft seine Besen :)
Gruß Otto
etwas einfacher sollte folgendes funktionieren:
folgende zeile für eddy hinter zeile 2267 einfügen:
$free_version = 339 if($free_version !~ m/^free\sfrom\sprocps-ng/);
wenn der command "free -V" existiert und am anfang immer "free from procps-ng" zurückliefert, könnte für alle der code so aussehen (mit den 2 ausnahmen für benjamin und eddy):
my $free_version = SYSMON_execute($hash, 'free -V');
$free_version = 339 if($free_version !~ m/^free\sfrom\sprocps-ng/);
$free_version =~ s/\D//g;
$free_version = 340 if($free_version eq "");
my @speicher = SYSMON_execute($hash, 'LANG=en ' . ($free_version > 339 ? 'free -w' : 'free'));
unter der voraussetzung, dass alle versionen die "UNKNOWN" als versionsnummer liefern auch den command "free -w" beherschen.
bei mir kommt die "echte" version (3312) jedenfalls noch durch.
Hallo Frank,
vielen Dank - hab's ausprobiert und die angegebene Zeile ins Modul aufgenommen, FHEM neu gestartet:
BusyBox v1.24.1 (2020-02-14 03:15:41 CST) multi-call binary.
Usage: free [-b/k/m/g]
Display the amount of free and used system memory
2020.03.25 00:15:32 1: PERL WARNING: Use of uninitialized value $free_version in pattern match (m//) at ./FHEM/42_SYSMON.pm line 2268.
BusyBox v1.01 (2020.01.08-18:26+0000) multi-call binary
Usage: free
Displays the amount of free and used system memory
2020.03.25 00:15:35 1: PERL WARNING: Use of uninitialized value $free_version in pattern match (m//) at ./FHEM/42_SYSMON.pm line 2268.
Und noch ein Nachtrag, ich glaube da gab's ein paar Nebenwirkungen:
2020.03.25 08:30:40 1: PERL WARNING: Argument "|#|2|#|1|#|4|#|1|#|.|#|0|#|0|#|" isn't numeric in numeric lt (<) at ./FHEM/42_SYSMON.pm line 1476.
2020.03.25 08:30:40 1: PERL WARNING: Argument "|#|5|#|3|#|5|#|.|#|2|#|5|#|" isn't numeric in multiplication (*) at ./FHEM/42_SYSMON.pm line 1477.
2020.03.25 08:30:40 1: PERL WARNING: Argument "|#|2|#|1|#|6|#|3|#|.|#|0|#|0|#|" isn't numeric in numeric lt (<) at ./FHEM/42_SYSMON.pm line 1476.
2020.03.25 08:30:40 1: PERL WARNING: Argument "|#|5|#|4|#|0|#|.|#|7|#|5|#|" isn't numeric in multiplication (*) at ./FHEM/42_SYSMON.pm line 1477.
2020.03.25 08:30:40 1: PERL WARNING: Argument "|#|2|#|1|#|7|#|9|#|.|#|0|#|0|#|" isn't numeric in numeric lt (<) at ./FHEM/42_SYSMON.pm line 1476.
2020.03.25 08:30:40 1: PERL WARNING: Argument "|#|5|#|4|#|4|#|.|#|7|#|5|#|" isn't numeric in multiplication (*) at ./FHEM/42_SYSMON.pm line 1477.
2020.03.25 08:30:40 1: PERL WARNING: Argument "|#|2|#|0|#|5|#|2|#|.|#|0|#|0|#|" isn't numeric in numeric lt (<) at ./FHEM/42_SYSMON.pm line 1476.
2020.03.25 08:30:40 1: PERL WARNING: Argument "|#|5|#|1|#|3|#|.|#|0|#|0|#|" isn't numeric in multiplication (*) at ./FHEM/42_SYSMON.pm line 1477.
@Eddy242 hast Du meinen Trick mal probiert? Würde mich interessieren ob das so einfach auch woanders geht. ;)
Auch wenn es eine schräge Lösung ist :)
Warum ist es schräg .. habe es beruflich schon mit anderen Kommandos machen (müssen)
Hallo Otto123,
habe es mit Deinem Workaround gefixt, allerdings mit ein paar Änderungen.
1) Script ohne den \ im Parameter
[~] # cat /sbin/free
#!/bin/sh
if [ "$1" = "-V" ]
then
echo "free from procps-ng 3.3.9"
else
/opt/free
fi
2) habe ich das "script" free in einen folder gesteckt, der im Pfad eigentlich vor /usr/bin/ aufgerufen werden sollte. Das funktionierte aber nicht obwohl "which free" das richtige ausgegeben hat. daher habe ich das busybox-free nach /opt verschoben. Ich nehme an dass das beim nächsten system-update oder schlimmer noch beim nächsten reboot wieder durch den update- bzw- QNAP Reparaturmechanismus gefixt wird. Da ich beides (Update und Reboot) aber eher im 2-3 Monatsrhythmus mache, ist es als Workaround verschmerzbar.
Generell wäre es natürlich Klasse, wenn SYSMON auf das busybox-free reagieren könnte, was den -V Parameter nicht kennt.
ich hatte vermutet, dass die "busybox"-meldung in der variable $free_version steckt. leider nicht.
ich habe jetzt bei mir mit einer nicht vorhandenen free-option getestet. die warnung konnte ich zwar verhindern, aber die "busybox"-meldung bleibt.
dann wäre das sinnvollste für eddy, den "free -V" befehl zu verhindern.
zb zeile 2267 verändern/ersetzen mit
my $free_version = 339;
Hallo Frank,
das ist vielleicht keine ideale Lösung, denn auf meinen RaspPis ist ja eine gescheite Shell, wo free -V eine Version ausgibt. die buysbox ist nur auf den QNAP NAS Geräten.
Wenn ich in meinem lokalen fhem den offziellen Modulcode ändere, hätte ich natürlich das gleiche Problem beim nächsten SYSMON-Update - müsste die Änderung wieder manuell nachziehen.
Eine dauerhafte Lösung wäre vielleicht ein Attribut (isBusyBox =1), was der Modulcode abfragen könnte um dann zu entscheiden?
genau, ein attribut wäre wohl am besten.
Zitat von: eddy242 am 25 März 2020, 11:17:42
habe es mit Deinem Workaround gefixt, allerdings mit ein paar Änderungen.
1) Script ohne den \ im Parameter
Zur Erklärung:
Mein Script war ein Komplettes - also Copy und Paste in die Kommandozeile und nicht nur teilweise Copy&Paste in eine Scripttextdatei. Dabei muss man den Variablen Namen $1 schützen (\$1) sonst wird er durch das hereDoc Konstrukt aufgelöst:
cat <<EOF > Dateiname
....
EOF
In der Scriptdatei wird dadurch richtig der Variablename $1 angelegt. Schützt man innerhalb EOF ...EOF die Variable nicht, wäre im Script dann an der Stelle nichts, oder der Inhalt von $1 im aufrufenden Kontext.
Ich bin der Meinung, man könnte mit einem solchen kurzen Script auch per FHEM / SSH das "Fake" Script in der QNAP platzieren und damit das Problem Update/Restart umgehen.
Ich habe das primär nicht für diesen Fall durchdacht, den sollte man im SYSMON Modul fixen. Aber vielleicht braucht man ja mal kleineren Script Code den man quasi "pseudo dauerhaft" in den busyboxen verankern will.
Gruß Otto
Zitat von: eddy242 am 25 März 2020, 11:54:20
Hallo Frank,
das ist vielleicht keine ideale Lösung, denn auf meinen RaspPis ist ja eine gescheite Shell, wo free -V eine Version ausgibt. die buysbox ist nur auf den QNAP NAS Geräten.
Wenn ich in meinem lokalen fhem den offziellen Modulcode ändere, hätte ich natürlich das gleiche Problem beim nächsten SYSMON-Update - müsste die Änderung wieder manuell nachziehen.
Eine dauerhafte Lösung wäre vielleicht ein Attribut (isBusyBox =1), was der Modulcode abfragen könnte um dann zu entscheiden?
du könntest aber bis zu einem fix zb ein userattribut "isBusyBox=1" für deine nas anlegen und den code entsprechend unterschiedlich ausführen lassen.
Das gleiche Problem gibt es auch unter Ubuntu 20.04:
free from procps-ng UNKNOWN
Unter 18.04 geht es noch. Das hat dann den Effekt, dass (unter 20.04) fälschlicherweise der Cache vom belegten Speicher abgezogen wird, weshalb mir nun eine negative RAM-Auslastung angezeigt wird :D
Das kann ich bestätigen mit 20.04
Hallo in die Runde, bin beruhigt, dass ich nicht der einzige bin, bei dem das auftritt. Vielleicht kann man ja das entsprechende Modul in FHEM generell anpassen? :)
Hallo bei mir tritt ein vergleichbarer Fehler:
2020.10.16 19:29:56 1: PERL WARNING: Use of uninitialized value $uInterval in concatenation (.) or string at ./FHEM/42_SYSMON.pm line 1350.
2020.10.16 19:29:56 1: PERL WARNING: Use of uninitialized value $uComment in concatenation (.) or string at ./FHEM/42_SYSMON.pm line 1350.
2020.10.16 19:29:56 1: PERL WARNING: Use of uninitialized value $uCmd in concatenation (.) or string at ./FHEM/42_SYSMON.pm line 1350.
auf.
Gruß Dieter
Auch bei mir unter Ubuntu 20.04.1 LTS dasselbe Problem mit free -V und den negativen RAM Werten
free from procps-ng UNKNOWN
Update:
Habe einen Thread gefunden, das free -V Problem sollte ab procps 3.3.16-5 fixed sein:
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=960810 (https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=960810)
Werde mal versuchen irgendwo die neue procps Version herzubekommen und dann berichten.
Wäre interessant, welche Versionen von procps bei Euch installiert sind, ich habe derzeit noch diese hier:
dpkg -l procps
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Architecture Description
+++-==============-=================-============-=================================
ii procps 2:3.3.16-1ubuntu2 arm64 /proc file system utilities
UPDATE:
Ok, habe mir die neue procps hier runtergeladen und installiert.
https://debian.pkgs.org/sid/debian-main-arm64/procps_3.3.16-5_arm64.deb.html
Jetzt läuft's bei mir wieder ohne Fehlermeldung im FHEM und in der Shell kommt bei free -V auch wieder eine Versionsnummer und nicht UNKNOWN.
RAM-Used ist allerdings noch immer negativ.
Hier noch eine Schritt für Schritt Anleitung wer's brauchen sollte. Bitte aber beachten, wer ein anderes System außer einen Raspberry Pi 4 und Ubuntu 20.04.1 64bit hat muss sich evtl. das passende procps Paket für seine Umgebung erst suchen.
wget http://ftp.br.debian.org/debian/pool/main/p/procps/procps_3.3.16-5_arm64.deb
dpkg -i ./procps_3.3.16-5_arm64.deb
dpkg -l procps
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Architecture Description
+++-==============-============-============-=================================
ii procps 2:3.3.16-5 arm64 /proc file system utilities
Ich hatte das gleiche Problem unter Ubuntu 20.04
Analog zum vorherigen Post habe ich folgendes gemacht:
wget http://ftp.br.debian.org/debian/pool/main/p/procps/procps_3.3.15-2_amd64.deb
sudo dpkg -i ./procps_3.3.15-2_amd64.deb
Fehlend Abhängigkeiten behoben mit:
sudo apt -f install
Nun ergibt ein:
free -V
free from procps-ng 3.3.16
Somit ist diese Meldung im Log Geschichte
Hinweis:
Mann sollte aber Wissen, was man tut, bei solche einer Aktion.
Nur für Experten und nicht für Anfänger geeignet, da danach keine Updates mehr hierfür erfolgen ...