Cannot fork: Cannot allocate memory | BlockingInformParent

Begonnen von Burny4600, 14 Februar 2018, 10:33:06

Vorheriges Thema - Nächstes Thema

Wernieman

Speicherplatz auf Speicherkarte voll?
"df -h"

Was läuft aktiv auf dem Gerät, mal alles "unwichtige" abgeschaltet?
"free -h"
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Kusselin

ok...df -h bringt:
pi@raspberrypi:~ $ df -h
Dateisystem    Größe Benutzt Verf. Verw% Eingehängt auf
/dev/root        15G    2,9G   12G   21% /
devtmpfs        460M       0  460M    0% /dev
tmpfs           464M       0  464M    0% /dev/shm
tmpfs           464M     12M  452M    3% /run
tmpfs           5,0M    4,0K  5,0M    1% /run/lock
tmpfs           464M       0  464M    0% /sys/fs/cgroup
/dev/mmcblk0p1   41M     23M   19M   54% /boot
tmpfs            93M       0   93M    0% /run/user/1000


also das die Karte voll ist kann ich da aber nicht erkennen...

und das kommt bei free -h
pi@raspberrypi:~ $ free -h
              total        used        free      shared  buff/cache   available
Mem:           927M        615M        222M        1,1M         89M        262M
Swap:           99M         86M         13M


was sagt mir das jetzt??
Gruss

Wernieman

Komisch ... kannst DU mir auch noch die Inodes geben?
df -i

Btw: Könntest DU einen neuen Thread aufmachen? Hat jetzt erstmal nichts mit dem Hier diskutierten Problem zu tuen!
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

popy

Zitat von: iice64 am 08 Januar 2019, 18:49:27
sudo nano /opt/fhem/fhem.sh

mit folgendem Inhalt anlegen


#!/bin/bash
export PERLBREW_ROOT=/opt/perlbrew
source /opt/perlbrew/etc/bashrc
perlbrew use perl-5.20.3
cd /opt/fhem
perl fhem.pl fhem.cfg



sudo chown fhem:dialout /opt/fhem/fhem.sh
sudo chmod a+x /opt/fhem/fhem.sh

ExecStart=/opt/fhem/fhem.sh

eintragen

Hast du dass bei Dir mit systemd auch so laufen?
Bin leider noch nicht dazugekommen, möchte aber schon Gerne auf eine andere Perl Version umstellen.

WIe geht das eigentlich beim RPI? Wird da das Package nicht mal aktualisiert?

Kusselin

schau hier...so musst vorgehen....da reichts nicht grad den von Dir zitierten Beitrag in die Konsole einzugeben...ein dankeschön an Yamaha1983
Nun ins Eingemachte:

Bitte mache zuerst ein Backup deiner SD Karte. So kannst du jederzeit zurück zum "alten Zustand".
Folgende Zeichen zeigen dir immer in welcher Shell du dich befindest. Es ist Linux Konvention und bitte nicht mit eingeben
$ = Usershell
# = Rootshell

Wir starten mit dem User "pi" in der Shell über SSH
Als erstes bitte das System auf den aktuellsten Stand bringen mit:
$ sudo apt-get update
$ sudo apt-get upgrade

Dann benötigen wir noch die Kompiler, also Entwickertools:
$ sudo apt-get install build-essentials

Dann noch ein paar Librarys für die Perlmodule im späteren
$ sudo apt-get install libmariadb-dev libssl-dev


Dann Root werden:
$ sudo su -
# export PERLBREW_ROOT=/opt/perlbrew
# mkdir /opt/perlbrew
# cd /opt/perlbrew
# curl -L https://install.perlbrew.pl | bash

Jetzt wird Perlbrew in /opt/perlbrew eingerichtet

# perlbrew init
Der müsste nun sagen, dass perlbrew installiert ist und den Hinweis geben, dass hier noch etwas in die Startdatei der Shell (.bashrc / .profile) rein muss.

# nano ~/.bashrc
Das startet den Editor für die Startdatei ~/.bashrc  . Hier bitte ans Ende der Datei gehen und folgende Zeile einfügen. Anschließend speichern (ohne " bitte)
"source /opt/perlbrew/etc/bashrc"

Damit das Startskript der Shell geladen wird, muss man sich neu als root einloggen. Hierzu bitte folgendes Drücken:
Strg + D
Jetzt bist du wieder in der Shell vom User "pi"
Dann wieder
$ sudo su -
Jetzt bist du wieder root und das Startskript wurde geladen. Prüfe das mit
# perlbrew init
Dann kommt sowas hier (perlbrew root (/opt/perlbrew) is initialized.)
Für Root ist nun alles i.O. jetzt musst du das aber auch für pi und fhem einrichten.
Hier wieder zurück zum Benutzer "pi" mit Strg + D.
Wenn du wieder in der Shell vom Benutzer pi bist, dann editiere bitte die ~/.profile
$ nano ~/.profile
Hier ebenso ans Ende der Datei folgende 2 Zeilen einfügen, speichern, schließen:
export PERLBREW_ROOT=/opt/perlbrew
source /opt/perlbrew/etc/bashrc


Jetzt ist der User pi auch bereit. Das gleiche wollen wir aber auch für den Benutzer "fhem".
Als Benutzer pi werden wir erstmal zu "fhem":
$ sudo su - fhem
Sollte das nicht gehen, dann schau mal mit dem nano in /etc/passwd
$ sudo nano /etc/passwd
Hier sollte die Zeile mit fhem wie folgt aussehen:
fhem:x:999:20::/opt/fhem:/bin/bash
Am Ende der Zeile siehst du die Shell, welche der Benutzer beim einloggen bekommt. Hier sollte /bin/bash stehen. Wenn nicht, abändern, speichern, schließen.

Ok wir sind nun "fhem". Jetzt bin ins Homeverzeichnis wechseln.
$ cd
Dann die .profile anlegen
nano .profile
Ebenso am Ende der Datei folgende zwei Zeilen hinzufügen:
export PERLBREW_ROOT=/opt/perlbrew
source /opt/perlbrew/etc/bashrc

Damit die Änderungen für pi und fhem wirksam werden, muss sich neu eingeloggt werden. Am besten einfach putty schließen und eine neue SSH Verbindung aufmachen.
Neu eingeloggt als "pi" wechseln wir zum Beutzer root, damit wir nun die Perlversion 5.20.3 erstellen können:
$ sudo su -
Installation der Grund Perslversion 5.20.3
# perlbrew install perl-5.20.3
Das dauert nun eine Weile, weil perlbrew das Perl von aus den Quellen kompiliert. Bitte die Shell in dieser Zeit nicht schließen, oder den Rechner mit der Shell in den Stand by bringen.
In einer zweiten Shell kann man sich auch das kompilieren live anschauen.
dazu
$ tail -f [DATEI]

Ist das kompilieren durch, hast du eine Perl light version ohne spezielle Module.
$ perlbrew list
sagt dir die installierten Versionen. Hier sollte jetzt 5.20.3 erscheinen

Nun wollen wir weitere Module für Perl kompilieren. Diese Änderungen sind immer mit Root durchzuführen, da Perlbrew ausschließlich root gehört
$ sudo su -
Nun aktivieren wir diese Perlversion für die Shell:
# perlbrew use perl-5.20.3
Obs geklappt hat kann man einfach testen mit einem:
# perl -v
Nun sollte die Version 5.20.3 angezeigt werden

Wenn du nun Module kompilieren willst, dann mache es wie folgt nacheinander. Bitte warte immer ab, ob das kompilieren geklappt hat:
# cpan JSON
# cpan Device::SerialPort
# cpan URI::Escape
# cpan RPC::XML
# cpan IO::Socket::SSL
# cpan Crypt::CBC
# cpan Switch
# cpan Net::WebSocket::Server::Connection
# cpan Crypt::Cipher::AES
# cpan Crypt::Rijndael_PP
# cpan LWP::Simple
# cpan MIME::Base64
# cpan SOAP::Lite
# cpan -T DBD::mysql DBD::MariaDB

Beim letzt sorgt -T dafür, dass das MOdul nicht gegen eine DB Instanz getestet wird. Weiß ja nicht, ob du dblog oder sowas verwendest.

Sind dann alle Module kompiliert hast du es fast geschafft. Jetzt musst du gucken, dass dein FHEM immer mit dieser Version startet.
Je nachdem, wie du FHEM installiert hast, wird das mit dem rc system, oder dem systemctrl gestartet.
Ich nutze das rc system und konnte daher mein Startskript wie folgt als root ändern:

# nano /etc/init.d/fhem

oben nach den ersten Zeilen dann:
------------------------FILE /etc/init.d/fhem -----------------------------
#!/bin/bash
# description: Start or stop the fhem server
# Added by Alex Peuchert

### BEGIN INIT INFO
# Provides:             fhem.pl
# Required-Start:       $local_fs $remote_fs
# Required-Stop:        $local_fs $remote_fs
# Default-Start:        2 3 4 5
# Default-Stop:         0 1 6
# Short-Description:    FHEM server
### END INIT INFO

export PERLBREW_ROOT=/opt/perlbrew
source /opt/perlbrew/etc/bashrc
perlbrew use perl-5.20.3
------------------------------------------------------------------------------
Dadurch wird immer das richtige Perl genutzt.

Du kannst FHEM aber auch erstmal aus der Shell händisch starten, um zu sehen, dass du alle notwendigen Module hast.
Dazu logge dich als Benutzer "fhem" ein.

$ sudo su - fhem
$ perlbrew use perl-5.20.3
Jetzt hast du die richtige Perlverson. Kannst du hier nochmal testen:
$ perl -v
Wenn jetzt kein fhem läuft, kannst du das wie folgt starten:
perl fhem.pl fhem.cfg

Dein FHEM sollte nun ordentlich starten. Schau aber bitte im log Verzeichnissen nach der aktuellen FHEM Log
$ cd log
$ ls -la
Dann die letzte Log suchen und anschauen
$ less [LETZTE LOG]

Hier suche mal nach @INC. Sollten Meldungen zu sehen sein, wo Module fehlen, kannst du diese einfach also root mit cpan (so wie oben beschrieben) nachkompilieren.

Burny4600

Ich bin gerade dabei einen Raspi neu aufzusetzten.
Mittlerweile gibt es ja schon die Perl Version 5.29.6.
Ich habe aber bisher keinen Erfolg diese zu installieren. Mir dürfte dabei ein Schritt fehlen.
wget https://www.cpan.org/src/5.0/perl-5.28.1.tar.gz
tar -xzf perl-5.28.1.tar.gz
cd perl-5.28.1

./Configure -des -Dprefix=$HOME/localperl
make
make test
make install


Was muss ich nach dem make install machen damit die vorhandene Perl Version 5.24.1 ersetzt wird.
Noch besser wäre natürlich kein Upgarde sondern gleich die letztgültige Perl Version zu installieren.

Hat jemand eine vollständige Installationsbeschreibung?
Mfg Chris

Raspberry Pi 2/2+/3/3+/4 / Betriebssystem: Bullseye Lite
Schnittstellen: RFXtrx433E, SIGNALduino, MQTT, nanoCUL, HM-MOD-UART, 1-Wire, LAN, ser2net, FHEM2FEHEM
Devices: S.USV, APC-USV, Fronius Datalogger Web 2, FS20, IT, Resol VBUS & DL2, TEK603, WMR200, YouLess, Homematic, MQTT

iice64

#381
Zitat von: iice64 am 03 Januar 2019, 13:57:53
Mit diesem Script kann mann sich eine fertig kompilierte für den Raspberry Pi (armv7l-linux) perl-5.20.3 und perlbrew installieren und sich mehre Stunden Arbeit sparen.

https://www.dropbox.com/s/926car881dvhrau/install-perlbrew-from-tar.sh?dl=1

#!/bin/bash
export PERLBREW_ROOT=/opt/perlbrew
source /opt/perlbrew/etc/bashrc
perlbrew use perl-5.20.3


hinzufügen

Burny4600

Ich möchte eigentlich kein ältere Version installieren.
Gibt es eine Möglichkeit die 5.28.1 zu installieren?
Mfg Chris

Raspberry Pi 2/2+/3/3+/4 / Betriebssystem: Bullseye Lite
Schnittstellen: RFXtrx433E, SIGNALduino, MQTT, nanoCUL, HM-MOD-UART, 1-Wire, LAN, ser2net, FHEM2FEHEM
Devices: S.USV, APC-USV, Fronius Datalogger Web 2, FS20, IT, Resol VBUS & DL2, TEK603, WMR200, YouLess, Homematic, MQTT

popy

Zitat von: iice64 am 03 Januar 2019, 13:57:53
Mit diesem Script kann mann sich eine fertig kompilierte für den Raspberry Pi (armv7l-linux) perl-5.20.3 und perlbrew installieren.
https://www.dropbox.com/s/926car881dvhrau/install-perlbrew-from-tar.sh?dl=1
(wie immer ohne Gewähr)

Dann noch /etc/init.d/fhem anpassen. Änderungen sind fett.

#!/bin/bash
# description: Start or stop the fhem server
# Added by Alex Peuchert

### BEGIN INIT INFO
# Provides:             fhem.pl
# Required-Start:       $local_fs $remote_fs
# Required-Stop:        $local_fs $remote_fs
# Default-Start:        2 3 4 5
# Default-Stop:         0 1 6
# Short-Description:    FHEM server
### END INIT INFO

export PERLBREW_ROOT=/opt/perlbrew
source /opt/perlbrew/etc/bashrc
perlbrew use perl-5.20.3

set -e
cd /opt/fhem
port=7072


Zitat von: iice64 am 08 Januar 2019, 18:49:27
sudo nano /opt/fhem/fhem.sh

mit folgendem Inhalt anlegen


#!/bin/bash
export PERLBREW_ROOT=/opt/perlbrew
source /opt/perlbrew/etc/bashrc
perlbrew use perl-5.20.3
cd /opt/fhem
perl fhem.pl fhem.cfg



sudo chown fhem:dialout /opt/fhem/fhem.sh
sudo chmod a+x /opt/fhem/fhem.sh

ExecStart=/opt/fhem/fhem.sh

eintragen

Danke hat geklappt.
{`perl -v`} gibt nun:




This is perl 5, version 20, subversion 3 (v5.20.3) built for armv7l-linux
(with 1 registered patch, see perl -V for more detail)

Copyright 1987-2015, Larry Wall

Perl may be copied only under the terms of either the Artistic License or the
GNU General Public License, which may be found in the Perl 5 source kit.

Complete documentation for Perl, including FAQ lists, should be found on
this system using "man perl" or "perldoc perl".  If you have access to the
Internet, point your browser at http://www.perl.org/, the Perl Home Page


Wie weiß ich ob er alle PERL libs findet (die man sonst mit CPAN nachinstalliert)?
Das ist mein fhem start log:


2019.01.19 16:33:39 1: Including fhem.cfg
2019.01.19 16:33:40 2: eventTypes: loaded 3598 events from ./log/eventTypes.txt
2019.01.19 16:33:45 1: PERL WARNING: TASMOTA::DEVICE::Expand() called too early to check prototype at ./FHEM/10_TASMOTA_DEVICE.pm line 283, <$fh> line 1270.
2019.01.19 16:33:45 1: PERL WARNING: TASMOTA::DEVICE::Expand() called too early to check prototype at ./FHEM/10_TASMOTA_DEVICE.pm line 289, <$fh> line 1270.
2019.01.19 16:33:47 1: Including ./log/fhem.save
2019.01.19 16:33:53 0: Featurelevel: 5.9
2019.01.19 16:33:53 0: Server started with 227 defined entities (fhem.pl:18029/2018-12-22 perl:5.020003 os:linux user:fhem pid:11563)
2019.01.19 16:33:57 1: PERL WARNING: Use of uninitialized value $ret in numeric le (<=) at FHEM/HttpUtils.pm line 618.
2019.01.19 16:34:04 2: AttrTemplates: got 26 entries


iice64

Zitat von: popy am 19 Januar 2019, 16:37:53
Wie weiß ich ob er alle PERL libs findet (die man sonst mit CPAN nachinstalliert)?

Wenn im Log keine @INC erscheinen, wird alles gefunden.

iice64

Zitat von: Burny4600 am 19 Januar 2019, 16:30:56
Ich möchte eigentlich kein ältere Version installieren.
Gibt es eine Möglichkeit die 5.28.1 zu installieren?
Die hat noch niemand auf Memory Leaks untersucht.
Von perl-5.20.3 weiß ich definitiv, das keine Memory Leaks auftreten.

Du kannst ja mal nach Yamahas Anleitung dein Glück versuchen. Die Kompilierung dauert allerdings ein paar Stunden.
Dann kannst du uns berichten, wie es bei dieser Version mit dem Speicherverbrauch aussieht.

Zitat von: yamaha1983 am 21 November 2018, 08:50:33
siehe hier

popy

Zitat von: iice64 am 19 Januar 2019, 18:07:55
Wenn im Log keine @INC erscheinen, wird alles gefunden.
Danke, dann sollte es passen

Gesendet von meinem ONEPLUS A6013 mit Tapatalk


Burny4600

ZitatDu kannst ja mal nach Yamahas Anleitung dein Glück versuchen.
Wo finde ich die Anleitung? Hier habe ich unter Yamahas nichts gefunden.
Mfg Chris

Raspberry Pi 2/2+/3/3+/4 / Betriebssystem: Bullseye Lite
Schnittstellen: RFXtrx433E, SIGNALduino, MQTT, nanoCUL, HM-MOD-UART, 1-Wire, LAN, ser2net, FHEM2FEHEM
Devices: S.USV, APC-USV, Fronius Datalogger Web 2, FS20, IT, Resol VBUS & DL2, TEK603, WMR200, YouLess, Homematic, MQTT

iice64

Zitat von: Burny4600 am 19 Januar 2019, 18:24:14
Wo finde ich die Anleitung? Hier habe ich unter Yamahas nichts gefunden.
Klick mal auf den Link über siehe hier Zitat von: yamaha1983 am 21 November 2018, 08:50:33

Skusi

Also bei mir unter Perl -5.20.2 sieht das leider so aus :
RPI3B, SIGNALduino, NanoCul868 (a-culfw), JeeLink Clone (LaCrosse), Firmata  für FB Heizung,Wasser+Gas+Klingel+Lux, Somfy Rolladen, Pollin Steckd.,TX29DTH,ESPEasy an S0 Stromz., MAX Fensterkontakte, IButton, SonOff Tasmota, ESP LED Controler