l2tp Tester gesucht!
A. Schulze
sca at andreasschulze.de
Di Mär 8 11:47:25 CET 2016
Christian Dresel:
> /etc/init.d/tunneldigger start
> l2tunnel on
>
> nicht stört und im Falle eine Trennung den Tunnel neu aufbaut, ist mein
> Vorschlag ein Script das die 2 Befehle ausführt und alle 5 Minuten über
> nen Cron getriggert wird. Ich bau das eben zusammen und teste dann mal.
Sorry, dass ich mich einmische.
Ich halte solche "stumpf alle 5 Minuten draufhauen" Methoden für suboptimal.
Wenn es gelingt, den Prozess so zu starten, dass er sich nicht in den
Hintergrund verabschiedet,
kann man init benutzen, um den Dienst am Laufen zu halten.
Es ist deutlich effizienter, zu monitoren, dass ob sich ein Dienst
beendet hat, als regelmäßig
Ressourcen für einen eventuellen Neustart aufzuwenden. So minimiert
man zusätzlich die Downtime.
Beim Ansatz "alle 5 Minuten" können halt 5 Minuten Ausfall entstehen...
Beispiel: der (mehr oder wenig sinnfreie) Dienst "sleep"
Eintrag in der /etc/inittab:
::respawn:/bin/sleep 53
Beschreibung: https://git.busybox.net/busybox/tree/examples/inittab
/bin/sleep läuft (hier für genau 53 Sekunden) und beendet sich dann.
*sofort* danach wird dies von init bemerkt und ein neuer Prozess gestartet.
Die Herausforderung ist also, Prozesse, die als Daemon laufen, so umzustellen,
dass sich gerade nicht in den Hintergrund verabschieden und sich
tatsächlich beenden,
wenn ein Fehler aufgetreten ist ( z.B. die Verbindung weg ist )
Ein Startscript für einen richtigen Dienst dieht dann etwas komplexer aus.
wobei das hier immernoch einfach ist.
/usr/bin/our_running_service:
#!/bin/sh
exec < /dev/null
exec 2>&1
# optional: Shellcode zur Initialisierung des Dienstes
exec env - /usr/sbin/service --no-daemon
Dieses Script schließt STDIN und leitet alle Ausgaben von STDERR auf
STDOUT um.
Abschließend ersetzt das exec die laufende Shell durch den zu
startenden Dienst.
Dabei wird dem Dienst noch das Environment geleert.
Wenn dieser sich beendet, kehrt das Script zum Aufrufer zurück und der
Supervisor startet den Job neu.
Vorteil: Dienst läuft, ohne Unterprechung
Nachteil: Dienst muss dafür geeignet sein.
Das ganze funktioniert. Auf OpenWRT als auch im Enterprise ISP
Betrieb. (wo ich mich tagsüber betätige)
Bei Interesse helfe ich gern..
Andreas
Mehr Informationen über die Mailingliste franken-dev