Hi,
ich möchte meinen BusyBox WebServer per Watchdog überwachen lassen, so das er immer läuft, falls er mal abstürzt. Das Ganze ist nur notwendig, wenn der busybox-httpd öfter abstürzt (was eigentlich gar nicht passieren sollte!!!).
Die Optionen und Pfandangaben müsst ihr natürlich nach euren Bedürfnissen und Gegebenheisten anpassen, die hier benutzten Angaben sind NICHT allgemeingültig!
Ich verwende die Oleg-Firmware Firmware Release: 1.9.2.7-9.
Die letzte Oleg-Firmware für die WL-HDD müsste die 1.9.2.7-9.1.12 sein.
Jetzt will ich mal das zusammentragen was dafür nötig ist (Bei Fehlern und Unvollständigkeiten bitte anmerken!).
HowTo - BusyBox HTTPd WebServer per CronJob Watchdog überwachen
1.) Cron-Paket Installieren + Cron Startskript erstellen, füllen + Rechte setzten
Als erstes solltet ihr Punkt 8 "8. CRON" aus Wengis HowTo durchführen.
Anmerkende Betrachtungen (Anfang):
Vor der Installation von cron findet:
PHP Code:
[admin@WL-HDD /]$ find | grep cron
./usr/bin/crontab
./usr/sbin/crond
./proc/7/fd: No such file or directory
Scheinbar hat in der letzten Oleg-Firmware der BusyBox schon einen cron mit an Bord. Kann das jemand bestätigen?
Anmerkende Betrachtungen (Ende):
Installation von cron starten:
PHP Code:
ipkg install cron
Ergebniss der Installation:
PHP Code:
[admin@WL-HDD /]$ ipkg install cron
Installing cron (4.1-7) to /opt/...
Downloading http://ipkg.nslu2-linux.org/feeds/optware/oleg/cross/stable/cron_4.1-7_mipsel.ipk
Configuring cron
Remember that the system crontab file is "/opt/etc/crontab".
Successfully terminated.
Anmerkende Betrachtungen (Anfang):
Nach der Installation von cron findet:
PHP Code:
[admin@WL-HDD /]$ find | grep cron
./opt/etc/init.d/S10cron
./opt/etc/crontab
./opt/etc/cron.d
./opt/lib/ipkg/info/cron.prerm
./opt/lib/ipkg/info/cron.control
./opt/lib/ipkg/info/cron.conffiles
./opt/lib/ipkg/info/cron.postinst
./opt/lib/ipkg/info/cron.list
./opt/bin/crontab
./opt/sbin/cron
./opt/var/cron
./opt/var/cron/crontabs
./opt/var/run/cron.pid
./opt/man/man1/crontab.1
./opt/man/man5/crontab.5
./opt/man/man8/cron.8
./usr/bin/crontab
./usr/sbin/crond
./proc/7/fd: No such file or directory
PHP Code:
[admin@WL-HDD /]$ cat /opt/etc/init.d/S10cron
#!/bin/sh
#
# Startup script for cron
#
# Stop myself if running
PIDFILE=/opt/var/run/cron.pid
[ -f ${PIDFILE} ] && kill `cat ${PIDFILE}`
/opt/sbin/cron
Nach der Installation von cron scheint dieses auch sofort gestartet zu sein, was ein ps zeigt:
PHP Code:
[admin@WL-HDD /]$ ps
PID Uid VmSize Stat Command
...
258 admin 380 S /opt/sbin/cron
Anmerkende Betrachtungen (Ende):
2.) Datei crontab bearbeiten
(die Datei leigt unter /opt/etc/crontab und wurde automatisch bei der Installation von cron angelegt, nach der Installation sollte die Datei unbearbeitet so aussehen
PHP Code:
SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/opt/sbin:/opt/bin
MAILTO=""
HOME=/
# ---------- ---------- Default is Empty ---------- ---------- #
(alles was unter /opt/ liegt ist, müsste auf der HDD der WL-HDD oder der USB-HDD bei den Routern liegen)
Inhalt von Datei: /opt/etc/crontab so wie ihr es abändern sollt:
PHP Code:
SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/opt/sbin:/opt/bin
MAILTO=""
HOME=/
# ---------- ---------- Default is Empty ---------- ---------- #
* * * * * admin /tmp/local/sbin/startprocess
Wichtig ist das diese Zeile da drin steht:
PHP Code:
* * * * * admin /tmp/local/sbin/startprocess
3.) Rechte von Datei crontab prüfen / bearbeiten
PHP Code:
chmod +x /opt/etc/crontab
4.) Datei startprocess anlegen und bearbeiten
- Die Datei legt ihr unter /tmp/local/sbin/startprocess an.
- Füllt Sie mit folgendem Inhalt:
Inhalt von Datei: /tmp/local/sbin/startprocess
PHP Code:
#!/bin/sh
#feel free to copy and/or modify
Processname=busybox_httpd
if [ ! -n "`pidof $Processname`" ] ; then #when Processname is not in pid list (running)
echo -n Starting: $Processname
date
exec busybox_httpd -p 81 -r WL-HDD -h /tmp/harddisk/www-busybox-httpd
fi
Diese Werte hier müsst ihr an Eure Gegebeneheiten eventeull noch anpassen.
busybox_httpd -p 81 -r WL-HDD -h /tmp/harddisk/www-busybox-httpd
-p 81 ... Port: 81
-r WL-HDD ... Servername: WL-HDD
-h /tmp/harddisk/www-busybox-httpd ... Pfad zum Webordern
Wenn ihr wollt das bei einem eventeullen Neustart des BusyBox HTTPd Webservers ihr das später nachvollziehen könnt, dann könnt ihr folgende Zeile mit in den unter Zweig ein binden:
PHP Code:
logger -t MyWatchDog "Process started by my Watchdog: $processname"
Das ganze sollte dann mit der ergänzten Zeile so aussehen:
PHP Code:
#!/bin/sh
#feel free to copy and/or modify
Processname=busybox_httpd
if [ ! -n "`pidof $Processname`" ] ; then #when Processname is not in pid list (running)
echo -n Starting: $Processname
date
exec busybox_httpd -p 81 -r WL-HDD -h /tmp/harddisk/www-busybox-httpd
logger -t MyWatchDog "Process started by my Watchdog: $processname"
fi
Wenn ich mich nicht irre müsste das Systemloggen aber auf alle Fälle irgendwo erst noch eingeschaltet werden. Oder?
So damit das ganze auch wirklich gespeichert wird müsst ihr noch in der Konsole (Putty) folgenden Befehl ausführen. Euer Router startet dabei neu und die Daten werden dauerhaft in den Flash geschrieben.
PHP Code:
flashfs save && flashfs commit && flashfs enable && reboot
5.) Rechte von Datei startprocess prüfen / bearbeiten
PHP Code:
chmod +x /tmp/local/sbin/startprocess
Gruß WLAN-Fan.