Linux Watchdog

Hi,

leider hatte ich manchmal (wenn auch nicht häufig) das Problem das sich mein IPS aufgehängt hat.
Hier eine relativ einfach Lösung um zu Prüfen ob die Scripte und Timer von IPS noch arbeiten.

Ich prüfe das alle 15 Minuten um nicht meine SD Karte tot zu schreiben aber kürzere Intervalle sind natürlich möglich.

  1. Es wird alle 14 Minuten eine Datei erstellt von Script im IPS

-> /usr/share/symcon/scripts/update.txt

  1. Es läuft ein Cronjob alle 15 Minuten welcher prüft ob die Datei älter als 15 Minuten ist.

Wenn die Datei älter ist wird ein einfacher reboot durchgeführt.

Installation:

  1. Im IPS ein Script anlegen mit einem Timer alle 14 Minuten

<?
$ergebniss= exec('touch update.txt');
?>
  1. Eine Datei /usr/share/symcon/scripts/watchdog.sh anlegen mit folgendem Inhalt:

#!/bin/bash
#Variablenzuordnung
Datei=/usr/share/symcon/scripts/update.txt


TNOW=$(date "+%s");

cd /usr/share/symcon/scripts/
if [ -e $Datei ];
then
TDATEI=$(stat -c %Z $Datei);
TNOW=$(date "+%s");
DATEIALTER=$(($TNOW - $TDATEI));
if [ $DATEIALTER -gt 900 ];
then
echo mache reboot;
reboot;
sudo reboot;
sudo reboot

fi
else

echo $Datei existiert nicht;

fi


Mit dem normalen reboot Kommando wollte er nicht deshalb auf 3 Schreibweisen :slight_smile:

  1. Die Datei ausführbar machen auf der Linux Conole
    chmod 777 /usr/share/symcon/scripts/watchdog.sh

  2. Crontab einrichten mit „crontab -e“

0,15,30,45 * * * * /usr/share/symcon/scripts/watchdog.sh

Heute Nacht hat sich der Dienst getötet nach dem Automatischen Neustart war alles wieder gut :slight_smile:

Hatte heute auch um ca 5:03 Uhr einen Absturz von IPS auf meinem OdroidC1, keine Ahnung warum.
Hach einen Restart von IPS hingen sofort einige PHP’s, und ich habe nicht weiter gesucht…
Danach rebbot und lief wieder.

War zum ersten mal, und habe jetzt mal deine Idee aufgegriffen und eingebaut.
Mal sehen wann es zuschlägt.
Habe das etwas kürzer gemacht, da ich / von einer externen USB Festpatte laufen lasse.

Hi freut mich zu hören :-). Eventuell kann man sogar noch etwas in die Log schreiben oder eine EMail versenden.
Ooer einfach beim Systemstart von IPS eine Mail verschicken lassen dann weiß man genau wann was passiert ist.

Mein Dienst ist auch abgeschmiert. Werde das Script wohl jetzt auch einbauen, herzlichen Dank.

Irgendwie komisch, der Windows-Dienst ist fast noch nie abgeschmiert - eigentlich ist das doch eher umgekehrt gedacht :stuck_out_tongue:

Komisch immer nur Tom´s :D:D:D

Meiner funktioniert gleich wie Toms. Stürzt auch nie ab.
Auch nicht der Rechner und schon gar nicht das BS.

- so und jetzt mach ma den Thread mit X vs. W. Flames kaputt …:smiley:

Hab die Watchdog seit ewig laufen.
Seit 03.12.15 Fehlermeldung :

„Warning: exec(): Unable to fork [sudo touch update.txt] in /usr/share/symcon/scripts/19017.ips.php on line 3“

//https://www.symcon.de/forum/threads/27650-Linux-Watchdog
$ergebniss= exec('touch update.txt');
SetValue(34796 /*[Datenaustausch\Update\Update]*/, time());

Die Update-Datei wird deshalb nicht upgedated.
Kann mir jeman einen Tip geben?

War ich wohl etwas voreilig.

Kaum macht man ein Update von IPS, schon geht es.:smiley:

geht doch g

Hallo,

danke für das Script / Anleitung.

Ich habe das Problem, dass IPS zwar einen Autostart hat, aber das Programm nicht richtig lädt. Erst nachdem ich IPS stoppe und erneut starte kann ich mit der Konsole auf IPS zugreifen.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Sun Mar  6 17:10:56 2016
pi@raspberrypi:~ $ sudo /etc/init.d/symcon start
IP-Symcon is already running
pi@raspberrypi:~ $ sudo /etc/init.d/symcon stop
IP-Symcon stopped
pi@raspberrypi:~ $ sudo /etc/init.d/symcon start
IP-Symcon started with PID 763

Hat jemand eine Idee?

LG Izack

Eigentlich würde dein Pi dann immer wieder neu starten. Was sagen den die logfiles? Noch genug Speicher frei?

Der bootet nicht von alleine neu, wie kann ich die Logfiles auslesen? Ich benutzte die 4.0 Version, habe ich das Script richtig angepaßt?

#!/bin/bash
#Variablenzuordnung
Datei=/var/lib/symcon/scripts/update.txt


TNOW=$(date "+%s");

cd /var/lib/symcon/scripts
if [ -e $Datei ];
then
TDATEI=$(stat -c %Z $Datei);
TNOW=$(date "+%s");
DATEIALTER=$(($TNOW - $TDATEI));
if [ $DATEIALTER -gt 900 ];
then
echo mache reboot;
reboot;
sudo reboot;
sudo reboot

fi
else

echo $Datei existiert nicht;

fi

Ich habe das so im Windows Editor geschrieben und als Watchdog.sh abgespeichert. Ist das OK?

Können die alten Pfade so bleiben?

chmod 777 /usr/share/symcon/scripts/watchdog.sh

Die Datei liegt ja in usr/share/symcon/scripts/

Hallo Izak,

Dein watchdog.sh gehört in den Ordner /var/lib/symcon/scripts . Der Eintrag in der crontab muß dann darauf zeigen:

0,15,30,45 * * * * /var/lib/symcon/scripts/watchdog.sh

Eintrag in die crontab mit

sudo crontab -e

Grüße, Gerhard

Hallo

bin zufällig darüber gestolpert, dass der Raspi einen Hardware-Watchdog an Bord hat.
Hier eine Beschreibung: http://www.gieseke-buch.de/raspberrypi/eingebauten-hardware-watchdog-zur-ueberwachung-nutzen

Man muss also auf Linux-Ebene einen Watchdog Daemon aktivieren. Der Rest ist, wie in diesem Thema weiter oben beschrieben.
Diese Lösung wäre einfach eine Spur ressourcenschonender und ausfallsicherer.

Läuft bei mir bis jetzt problemlos.

Nur eine kleine Warnung: die Sache wird etwas heikel, wenn die überwachte Datei mal nicht mehr getoucht wird. Im schlimmsten Fall startet der Raspi dann alle 10 Sekunden neu - zu kurz, um den Teufelskreis zu unterbrechen.
Ausweg: die SDcard an einen Linux-Rechner anschliessen und dort die überwachte Datei mit einem neuen Zeitstempel versehen. Dann hat man 10 Minuten Zeit, den IPS-Raspi neu zu starten und den Watchdog abzuschalten.
Es hat alles seine Schattenseiten… :slight_smile:

Gruss,
Dieter