(GELÖST) Wie Speicherauslastung im Dateisystem anzeigen?

Begonnen von is2late, 02 Dezember 2025, 15:26:33

Vorheriges Thema - Nächstes Thema

is2late

Hi,

so zwei- bis dreimal im Jahr ist der verfügbare Speicherplatz in ext4 auf 0 % und diverse Programme und Funktionen hängen.
Sobald ich das mitbekomme, wird der Müll händisch gelöscht - das können u.a.FHEM-Sicherungen sein, verirrte Dateisicherungen, Logs, SonosSpeak, voller Mülleimer usw.
Es wäre aber schon, wenn ich den Speicherstand über das Frontend laufend im Blick haben könnte, um frühzeitig einzugreifen.
Hat jemand eine Idee, wie sich das realisieren ließe?

Vielen Dank,
Ingo
Pi4, Tahoma Jalousien, Hue, Echo, Sonos, Lupusec XT3, FritzBox

betateilchen

#1
{`df -h`}
liefert:

Filesystem           Size  Used Avail Use% Mounted on
udev                 461M     0  461M   0% /dev
tmpfs                 95M  468K   95M   1% /run
/dev/nvme0n1p1        40G  3.7G   34G  10% /
tmpfs                473M     0  473M   0% /dev/shm
tmpfs                5.0M     0  5.0M   0% /run/lock
/dev/nvme0n1p15      124M   12M  113M  10% /boot/efi

Das lässt sich doch wunderbar zeilenweise auswerten?

Noch einfacher:

{`df -h |grep nvme`}
liefert nur die "echten" Speicherorte:

/dev/nvme0n1p1        40G  3.7G   34G  10% /
/dev/nvme0n1p15      124M   12M  113M  10% /boot/efi
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

Zitat von: is2late am 02 Dezember 2025, 15:26:33der verfügbare Speicherplatz in ext4 auf 0 %

Ähm... "ext4" ist kein Speicherort, sondern die Typbezeichnung eines Filesystems.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

is2late

Vielen Dank, Betateilchen!

ZitatDas lässt sich doch wunderbar zeilenweise auswerten?
Tja... dafür fehlt mir leider das Handwerkszeug, fürchte ich.
Kannst Du mir verraten, wie man von Fhem aus auf diese Infos zugreifen kann?
zB, wenn man Deine Lösung für die Abfrage der "echten" Speicherorte nutzen möchte?

LG
Pi4, Tahoma Jalousien, Hue, Echo, Sonos, Lupusec XT3, FritzBox

betateilchen

defmod hdd at +*01:00:00 {getHdd $SELF}

In der 99_myUtils.pm die Funktion getHdd() anlegen:

sub getHdd {
  my $dev = shift;
  my @disks = split("\n",(`df -h |grep nvme`));
  map {my @l = split(" ",$_); fhem "setreading $dev ".makeReadingName($l[0])." $l[4]";} @disks;
  return;
}

Dann entstehen einmal pro Stunde zwei readings in dem at-device mit den Namen der Partitionen und der Belegung:

setstate hdd 2025-12-02 16:08:28 /dev/nvme0n1p1 10%
setstate hdd 2025-12-02 16:08:28 /dev/nvme0n1p15 10%
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

Es gibt für solche Aufgaben auch fertige FHEM Module.

https://commandref.fhem.de/#SYSMON
https://commandref.fhem.de/#SYSSTAT

Mir sind die aber alle zu überladen für solche "Kleinigkeiten".
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

is2late

Pi4, Tahoma Jalousien, Hue, Echo, Sonos, Lupusec XT3, FritzBox

is2late

Ich muss leider mal nachfragen....
Bekomme außer dem state kein Reading. Kann das damit zusammenhängen, dass der Speicher keine Karte, sondern ein USB-Stick ist?
So sieht es aus:
[code]define hdd at +*01:00:00 {getHdd $SELF}
attr hdd room Geräte,System
#   CFGFN     
#   COMMAND    {getHdd $SELF}
#   DEF        +*01:00:00 {getHdd $SELF}
#   FUUID      69301b4d-f33f-6337-fb84-789b0fdaaa5dcbae
#   NAME       hdd
#   NR         1612
#   NTM        15:13:17
#   PERIODIC   yes
#   RELATIVE   yes
#   REP        -1
#   STATE      Next: 15:13:17
#   TIMESPEC   01:00:00
#   TRIGGERTIME 1764771197.56771
#   TRIGGERTIME_FMT 2025-12-03 15:13:17
#   TYPE       at
#   eventCount 4
#   READINGS:
#     2025-12-03 14:13:17   state           Next: 15:13:17
#   hmccu:
#
setstate hdd Next: 15:13:17
setstate hdd 2025-12-03 14:13:17 state Next: 15:13:17

[/code]

Den Code für die 99_myUtils habe ich doch wohl hoffentlich richtig kopiert ;-)
####### Speicherplatz auf Karte/Stick des Raspi abfragen ######
sub getHdd {
  my $dev = shift;
  my @disks = split("\n",(`df -h |grep nvme`));
  map {my @l = split(" ",$_); fhem "setreading $dev ".makeReadingName($l[0])." $l[4]";} @disks;
  return;
}

#### HINWEIS: "1;" muss immer das letzte Zeichen sein! Neue Routinen also oberhalb eintragen! ######

1;

LG Ingo
Pi4, Tahoma Jalousien, Hue, Echo, Sonos, Lupusec XT3, FritzBox

betateilchen

naja, den Teil mit dem "nvme" musst Du schon an Deine Gegebenheiten anpassen.

Was ergibt denn (in der Befehlszeile eingeben)

{`df -h`}
als Rückmeldung in FHEM?
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

is2late

Danke!

Die Abfrage ergibt
Dateisystem    Größe Benutzt Verf. Verw% Eingehängt auf
/dev/root        28G     15G   12G   57% /
devtmpfs        3,6G       0  3,6G    0% /dev
tmpfs           3,7G       0  3,7G    0% /dev/shm
tmpfs           1,5G    2,0M  1,5G    1% /run
tmpfs           5,0M    4,0K  5,0M    1% /run/lock
/dev/sda1       253M     56M  197M   23% /boot
tmpfs           739M     20K  739M    1% /run/user/1000

LG
Pi4, Tahoma Jalousien, Hue, Echo, Sonos, Lupusec XT3, FritzBox

betateilchen

Ein kleines bisschen geistige Transferleistung hatte ich in der Tat vorausgesetzt...

Ersetze mal in der Funktion in 99_myUtils.pm 'grep nvme' durch 'grep root' (ohne die Anführungszeichen!)
Danach kannst mit "set hdd execNow" testen, ob es funktioniert.

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

is2late

Ein kleines bisschen geistige Transferleistung hatte ich in der Tat vorausgesetzt...Asche auf mein Haupt... Aber ehrlich gesagt, die allermeisten Dinge hier sind für mich bömische Dörfer.
Aber ich sammele jeden Tipp und muss daher wenigstens nur einmal pro Problem fragen ;-)

Herzlichen Dank, Betateilchen, für Deine geduldige Hilfe!

LG Ingo
Pi4, Tahoma Jalousien, Hue, Echo, Sonos, Lupusec XT3, FritzBox