[PATCH 1/5] nodewatcher: split into nodewatcher.d scripts for individual task

Fabian Bläse fabian at blaese.de
So Apr 19 16:04:22 CEST 2020


On 19.04.20 15:54, mail at adrianschmutzler.de wrote:
>>> Den Timeout mochte ich nicht, da es ja effektiv kein Timeout war, sondern eine fixe Wartezeit für jedes Subskript. Ich halte nichts davon, für jedes Subskript zwei Minuten zu warten, sodass dann der ganze nodewatcher 20-30 Sekunden dauert (im Moment). Und beim Exitstatus wurde es dann noch kompliziert.
>>> So oder so waren aber ja der Exitstatus und der "Timeout" im Prinzip Zusatzfeatures, während meine Version aus einem Skript eine Aneinanderreihung von vielen Einzelskripten macht.
>>> Ich würde das also separat diskutieren, aber es ist in meinen Augen keine Notwendigkeit für die Aufteilung an sich. 
>> Was? Ne. 
>> Der Timeout sollte eigentlich tatsächlich als Timeout funktioniert haben, getestet hab ichs aber nie.. 
> 
> Der Timeout funktioniert deshalb nicht, weil wir hinterher die Ausgabe abfangen mit $(). Sonst würde er funktionieren.
Doch, der funktioniert.
Einen kleinen Bug hatte er damals noch: Die Ausgabe der sleep,kill-Subshell wurde nicht nach /dev/null geleitet.
Daher werden die Ausgabedeskriptoren der Elternshell vererbt, womit $() erst fertig wird, wenn alle Prozesse fertig sind (also auch sleep, kill, ..).

Aber ich hab das mal in der reparierten Form getestet: Hilft leider nichts, weil es im OpenWrt scheinbar keinen einfachen Weg gibt, Prozess und alle Kindprozesse (die Shell startet ja jede Menge davon) zu killen.
Beispielsweise kann ein langes sleep in einem Subskript daher dennoch das ganze nodewatcher Konstrukt lange blockieren, weil nur der Shellprozess gekillt wird, nicht aber das Sleep. Und damit ergibt sich wieder (ungefähr) das gleiche Problem wie oben.

Gruß
Fabian

-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname   : signature.asc
Dateityp    : application/pgp-signature
Dateigröße  : 833 bytes
Beschreibung: OpenPGP digital signature
URL         : <https://lists.freifunk.net/pipermail/franken-dev-freifunk.net/attachments/20200419/ef90937d/attachment.sig>


Mehr Informationen über die Mailingliste franken-dev