ubuntuusers.de

Shellskript auf freien Speicher testen

Status: Ungelöst | Ubuntu-Version: Ubuntu 16.04 (Xenial Xerus)
Antworten |

TheBigWave

Avatar von TheBigWave

Anmeldungsdatum:
2. September 2009

Beiträge: Zähle...

Wohnort: /Hessen/Hanau/Home

Hallo alle zusammen,

ich bin dabei mir eine kleine Kamera zu basteln die alle X Minuten ein Bild schießt. Klappt auch soweit alles gut hab, aber noch eine Frage.

Aktuell wird via Cron periodisch ein Skript ausgeführt welches einfach mit der Webcam ein Foto erstellt. Ich hätte gerne eine Funktion die das Bild erst macht wenn noch min. 500MB freier Speicher vorhanden ist. Hat da jemand eine Idee wie man da am besten rangeht?

lg TheBigWave

DJKUhpisse Team-Icon

Supporter, Wikiteam
Avatar von DJKUhpisse

Anmeldungsdatum:
18. Oktober 2016

Beiträge: 18227

Wohnort: in deinem Browser, hier auf dem Bildschirm

Eventuell geht das mittels df und grep.

Marc_BlackJack_Rintsch Team-Icon

Ehemalige
Avatar von Marc_BlackJack_Rintsch

Anmeldungsdatum:
16. Juni 2006

Beiträge: 4694

Wohnort: Berlin

1
2
$ df -B1048576 /home/pi/Pictures | tail -n 1 | awk '{ print $4 }'
1631

klal

Anmeldungsdatum:
13. Januar 2007

Beiträge: 413

1
[ "$(df /PFAD | tr -s [:blank:] | cut -d' ' -f4 | tail -n1)" -le "500000" ]&&echo exit
[]    - Abfrage

df    - Angaben zum Dateisystem
tr -s - nur ein Leerzeichen bei der Ausgabe von df
cut   - gewünschte Angabe aus der Ausgabe von df
tail  - nur letzte Zeile der Ausgabe

le    - Vergleich kleiner/gleich less/equal

&&    - wenn zutreffend dann führe aus (> exit)

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11267

Wohnort: München

1
2
# prüfe, ob noch mindestens 500 MB frei sind, sonst breche ab
df -B1048576 /home/pi/Pictures | awk 'END{if ($3 < 500){exit 1}}' || exit

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13216

Man kann das auch mit weniger Hexerei Parsing über stat hinbekommen:

1
2
3
4
$ stat -fc %a .
35420173
$ stat -fc '%a %S' .
35419928 4096

Das sind die freien Blöcke, die einem Nicht-root-Nutzer zur Verfügung stehen. Der zweite Wert ist die Blockgröße. Man kann das z.B. so kombinieren:

1
2
$ stat -fc '%a * %S' . | bc
145079996416

Also

1
2
3
if [ $(stat -fc '%a * %S' /ziel/verzeichnis | bc) -ge 524288000 ]; then
  echo fotto
fi
Antworten |