SpeicherLogger für den Solar-Logger

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