dsystem is een knipoog naar systemd, het systeem dat het wel eens even allemaal zou gaan regelen in de linuxwereld. Al is dsystem in eerste instantie vernoemd naar de auteur.
Dsystem draait elke 24 uur (op een vast tijdstip) of tijdens de start van de computer. Maar wat als dat samenvalt? Dan heb je twee keer dsystem aan het werk, en dat is ongewenst. Om dat te voorkomen controleert dsystem eerst of er niet een lock file staat in /local/var/run. Als die er niet is, schrijft dsystem een lock file. Zo wordt gegarandeerd dat er maar e1n instantie van dsystem draait.
Dsystem geeft system info, maakt backups, en doet upgrades. Om dsystem zelf te upgraden is er echter een apart programma nodig. Dsystem kan niet zichzelf upgraden. Dat wordt dus gedaan door dupdsys. Ze worden achter elkaar aangeroepen door cron. Om te voorkomen dat dupdsys direct dsystem gaat overschrijven, controleert dupdsys op de lock file van dsystem.
In de praktijk komt dat nauwelijks voor, debian cron wacht keurig op het afronden van elk script alvorens het nieuwe script te starten. Maar het kan toch fout gaan als boottime vlak voor of na de 24 uurs routine plaats vind.. De eerste dupdsys wacht keurig op dsystem. Maar de tweede dsystem stopt onmiddelijk en geeft daarmee het groene licht aan de tweede dupdsys. Gelukkig controleert die ook op een lock file. Als het bijgaande plaatje illustreert.
Het was toeval dat ik die extra controle schreef. Toevallig ontwikkelde ik dupdsys op mijn antieke laptop waar geen debian, maar slackware op draait. Cron staat daar geen boottime aanwijzingen toe. Dus plaatste ik ze in /etc/rc.local In rc.local moet je elk script in de background zetten, wat betekent dat na de start het volgende script meteen start. Omdat dit niet de bedoeling was met dupdsys had ik dus de truuk bedacht met de controle op de lock file van dsystem.
Nooit gedacht aan de mogelijkheid die vandaag bij toeval op trad. Maar het ging goed. Ik vraag me af of de F-35 van dit soort gelukkig programmeren afhangt. Wiens aankomst ik mocht aanschouwen op de eerste rang, niet op de eretribune, maar op mijn luie bank thuis. Ik woon toch maar mooi.

Reacties