Da der Solar-Logger alle paar Monate bei mir einfach aus der Prozessliste verschwindet und ich die Vermutung habe das der Speicher überläuft habe ich ein SpeicherLoggerSkript gechrieben das den Speicherbedarf des Solar-Logger in einer LogDatei mitschreibt.
#!/bin/sh
#
# Solar-Logger - A Daemon for logging Data from a Solar Plant
# Copyright (C) 2007 Klaus Dotterweich (dr.dotti@gmx.de)
#
# This program is free software; you can redistribute it and/or modify it under the terms of the
# GNU General Public License as published by the Free Software Foundation;
# either version 3 of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
# without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along with this program;
# if not, see .
#
# Solar-Logger - Ein Daemon zum loggen der Daten einer Solaranlage
# Copyright (C) 2007 Klaus Dotterweich (dr.dotti@gmx.de)
#
# Dieses Programm ist freie Software. Sie können es unter den Bedingungen der GNU General Public License,
# wie von der Free Software Foundation veröffentlicht, weitergeben und/oder modifizieren,
# entweder gemäß Version 3 der Lizenz oder (nach Ihrer Option) jeder späteren Version.
#
# Die Veröffentlichung dieses Programms erfolgt in der Hoffnung, daß es Ihnen von Nutzen sein wird,
# aber OHNE IRGENDEINE GARANTIE, sogar ohne die implizite Garantie der MARKTREIFE oder
# der VERWENDBARKEIT FÜR EINEN BESTIMMTEN ZWECK. Details finden Sie in der GNU General Public License.
#
# Sie sollten ein Exemplar der GNU General Public License zusammen mit diesem Programm erhalten haben.
# Falls nicht, siehe .
#
Programm='Solar-Logger' # Programm dessen Speicherbedarf geloggt werden soll.
IntervallZeit=1 # Loggintervall
Loggen="JA" # Um alles zu Loggen "DEBUG" und nur sinnvolle Sachen zu Loggen "JA"
LogPfad='/root/Solar-Logger-0.3/DebugLog/Speicher/' # Pfad der Datei in die geloggt werden soll
LogDateiName='Solar-Logger-Speicher.log' # DateiName der LogDatei
LogDatei=$LogPfad`date '+%d.'`$LogDateiName # Datei in die geloggt werden soll
#######################
# Startzeit des Skriptes Merken
#######################
ZeitstempelStart=`date '+%s'`
#####################
# Start des Watchdog loggen
#####################
if ([ $Loggen == "DEBUG" ] || [ $Loggen == "JA" ])
then
echo `date '+%d.%m.%y %T'`: SpeicherLogger gestartet. >> $LogDatei
echo `date '+%d.%m.%y %T'`: IntervallZeit ist $IntervallZeit in Minuten. >> $LogDatei
fi
TempStartZeit=$StartZeit # Die Zeit zum Starten des Solar-Loggers wieder zurücksetzen
#####################
# Programmschleife
#####################
while [ true ]
do
LogDatei=$LogPfad`date '+%d.'`$LogDateiName # Datei in die geloggt werden soll
#######################
# Startzeit der Schleifen Merken
#######################
ZeitstempelStartSchleife=`date '+%s'`
# Überprüfen ob das Progarmm läuft
if [ `pidof $Programm` > /dev/null ]
then
# Wenn Programm läuft
# Speicher Bedarf Loggen
echo `date '+%d.%m.%y %T'`: " "`top -b -n 1 -p $(pidof $Programm) | tail --lines=2 | head --lines=1` >> $LogDatei
else
# Wenn Programm nicht läuft
echo `date '+%d.%m.%y %T'`: " Das Programm "$Programm" läuft momentan nicht." >> $LogDatei
fi
#######################
# Endezeit der Schleifen Merken
#######################
ZeitstempelEndeSchleife=`date '+%s'`
#################################################
# SchleifenZeit berechnen
#################################################
SchleifenZeit=`/usr/bin/expr $ZeitstempelEndeSchleife - $ZeitstempelStartSchleife`
if [ $Loggen == "DEBUG" ]
then
echo `date '+%d.%m.%y %T'`: Die Schleifenzeit beträgt $SchleifenZeit. >> $LogDatei
fi
# Die Schleife schlafen legen
if [ $Loggen == "DEBUG" ]
then
echo `date '+%d.%m.%y %T'`: SpeicherLogger legt sich für `/usr/bin/expr $IntervallZeit \* 60` Sekunden schlafen. >> $LogDatei
fi
sleep `/usr/bin/expr $IntervallZeit \* 60`
done