Da der Solar-Logger alle paar Monate bei mir einfach aus der Prozessliste verschwindet, habe ich ein ProzessWatchdogSkript geschrieben, dass die Prozesse in gewissen Abständen überwacht und sollte der Solar-Logger Prozess verschwinden ein Startskript aufruft, das den Solar-Logger neu startet.
#!/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 .
#
PruefText='Solar-Logger -d' # Dieser Text wird in der Ausgabe von ps fx gesucht (Achtung!!! Der Text muss eindeutig sein!!!)
WatchdogZeit=1 # Intervall in Minuten in der der der Watchdog die Watchdog Datei Überprüft
StartZeit=5 # Zeit in Minuten nachdem der Solar-Logger gestartet werden soll wenn sich die Watchdog Datei nicht mehr geändert hat.
StartBefehl='/root/Solar-Logger-0.3/README/ProzessWatchdogWatchdog/Solar-Logger-Start.sh' # Befehl zum starten des Solar-Loggers
Loggen="DEBUG" # Um alles zu Loggen "DEBUG" und nur sinnvolle Sachen zu Loggen "JA"
LogPfad='/root/Solar-Logger-0.3/DebugLog/Watchdog/' # Pfad der Datei in die geloggt werden soll
LogDateiName='Solar-Logger-Watchdog.log' # DateiName der LogDatei
LogDatei=$LogPfad`date '+%d.'`$LogDateiName # Datei in die geloggt werden soll
#######################
# Startzeit des Skriptes Merken
#######################
ZeitstempelStart=`date '+%s'`
###########################################
# Überprüfe ob der Watchdog schon läuft
###########################################
#if [ -f /var/run/Solar-Logger-Watchdog.pid ]
#then
# if ([ $Loggen == "DEBUG" ] || [ $Loggen == "JA" ])
# then
# echo `date '+%d.%m.%y %T'`: Watchdog ist bereits gestartet. >> $LogDatei
# fi
# exit
#else
# echo $$ > /var/run/Solar-Logger-Watchdog.pid
#fi
#####################
# Start des Watchdog loggen
#####################
if ([ $Loggen == "DEBUG" ] || [ $Loggen == "JA" ])
then
echo `date '+%d.%m.%y %T'`: Watchdog gestartet. >> $LogDatei
echo `date '+%d.%m.%y %T'`: WatchdogZeit is $WatchdogZeit in Minuten. >> $LogDatei
echo `date '+%d.%m.%y %T'`: StartZeit is $StartZeit 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 der Solar-Logger Prozess läuft
ps fx | grep -v grep | grep "$PruefText" > /dev/null
if [ $? -eq 0 ]
then
# Wenn der PruefText gefunden wurde (Solar-Logger läuft)
TempStartZeit=$StartZeit # Die Zeit zum Starten des Solar-Loggers wieder zurücksetzen
if [ $Loggen == "DEBUG" ]
then
echo `date '+%d.%m.%y %T'`: Der Solar-Logger läuft. >> $LogDatei
echo `date '+%d.%m.%y %T'`: Die TempStartZeit beträgt $TempStartZeit. >> $LogDatei
fi
else
# Wenn der PruefText nicht gefunden wurde (Solar-Logger läuft nicht)
TempStartZeit=`/usr/bin/expr $TempStartZeit - $WatchdogZeit`
if ([ $Loggen == "DEBUG" ] || [ $Loggen == "JA" ])
then
echo `date '+%d.%m.%y %T'`: Der Solar-Logger läuft nicht. >> $LogDatei
echo `date '+%d.%m.%y %T'`: Die TempStartZeit beträgt $TempStartZeit. >> $LogDatei
fi
fi
# Überprüfe ob StartZeit abgelaufen ist
if [ $TempStartZeit -le 0 ]
then
# Wenn StartZeit abgelaufen ist
if ([ $Loggen == "DEBUG" ] || [ $Loggen == "JA" ])
then
echo `date '+%d.%m.%y %T'`: Die TempStartZeit ist abgelaufen. Der Startbefehl wird ausgeführt. >> $LogDatei
fi
# Solar Logger starten
$StartBefehl
# 10 Minuten schafen gehen damit der Logger sicher starten kann
if ([ $Loggen == "DEBUG" ] || [ $Loggen == "JA" ])
then
echo `date '+%d.%m.%y %T'`: Watchdog legt sich für `/usr/bin/expr 10 \* 60` Sekunden schlafen. >> $LogDatei
fi
sleep `/usr/bin/expr 10 \* 60`
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
# Den Watchdog schlafen legen
if [ $Loggen == "DEBUG" ]
then
echo `date '+%d.%m.%y %T'`: Watchdog legt sich für $WatchdogZeit Minuten schlafen. >> $LogDatei
echo `date '+%d.%m.%y %T'`: Watchdog legt sich für `/usr/bin/expr $WatchdogZeit \* 60` Sekunden schlafen. >> $LogDatei
fi
sleep `/usr/bin/expr $WatchdogZeit \* 60`
done
#!/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 .
#
cd /root/Solar-Logger-0.3
./Solar-Logger -d