Von den meisten vermutlich unbemerkt, läuft diese Seite inzwischen auf einem eigenen Virtuellen Private Server (kurz VPS) bei Hosteurope, da mir mein altes Webpack zum Experimentieren nicht mehr ausreicht. Betriebssystem ist die auf Debian basierende Linux-Distribution Ubuntu.
Gestern wollte ich mir dann testweise die Speicherauslastung des VPS anzeigen lassen. Zu diesem Zweck gibt es im Netz mit vpsmem auch schon ein fertiges Shell-Script für OpenVZ- oder Virtuozzo-basierte Server, dessen Autor leider unbekannt ist. Das Script holt sich die Werte aus dem System und stellt sie in leserlicher Form dar.
Problematisch wird es allerdings bei Servern, die eine deutsche Spracheinstellung besitzen. Das System gibt nämlich Zahlen in der Form xx.xxx zurück, aber das eingesetzte printf erwartet in diesem Fall eine Zahl in der Form xx,xxx - also mit einem Komma als Dezimaltrennzeichen - was zu einem "invalid number"-Fehler führt.
Mit folgenden Zeilen kann man den Fehler beheben:
[...] # FIX: Komma statt Punkt als Dezimaltrennung maximalgenutzt=`echo $maximalgenutzt | sed 's/\./,/g'` momentan=`echo $momentan | sed 's/\./,/g'` barriere=`echo $barriere | sed 's/\./,/g'` momentan=$(printf "%5.0f" $momentan) barriere=$(printf "%5.0f" $barriere) proz=$(echo "scale=3; $momentan *100 / $barriere" | bc) proz=`echo $proz | sed 's/\./,/g'`- [...]
Dabei wird bei den entsprechenden Variablen einfach der Punkt per RegEx durch ein Komma ersetzt, was dafür sorgt, dass printf wieder korrekt arbeiten kann.
Hier auch noch das geänderte Script zum Downloaden:
- vpsmem.sh (Benutzung und Änderung auf eigene Gefahr)
Daniel, 11. Juni 2009 um 18:16 Uhr // 1 Kommentar

engi 10. August 2009 um 19:20 Uhr
vielen Dank, funktioniert super