OpenBSD Daemons registrieren

OK, FreeBSD und NetBSD verwalten ihre Daemons fast identisch.
Perfekt! Somit kann ich mit einem Daemon-Script-Skelett alle BSDs behandeln.

Wieder falsch!
Denn OpenBSD setzt auf “leicht andere” Variablennamen.

Und wieder fließen weitere ifdef XXXBSD statements in meine Codebase.


Ich hätte erwartet, dass OpenBSD die “antiksten” Scripts mit dem geringsten Ausbau an gemeinsamen Funktionen bereitstellt.
Doch Fehlanzeige.

OpenBSD setzt auf Funktionen anstatt von Variablen und wirkt damit fast objektorientiert und modern.

Ein Beispiel-Script sieht so aus:

 1#!/bin/sh
 2
 3daemon="/usr/local/bin/myserviced"
 4daemon_flags="--optional_daemon_flag=value"
 5
 6. /etc/rc.d/rc.subr
 7
 8rc_start() {
 9  ${rcexec} ${daemon} ${daemon_flags} &
10}
11rc_check() {
12  get_myserviced_status()
13}
14rc_stop() {
15  kill_or_whatever_myserviced()
16}
17
18rc_cmd $1

Hier schreibt man also rc_* Funktionen um die notwendigen Schritte für’s Starten, Stoppen und Status-Abfragen ausführen zu lassen.
Wenn aber rc_check() und rc_stop() weggelassen werden, so versucht rc_cmd diese Funktionalität “handelsüblich” auszuführen.

Das Tool rcctl erhält in OpenBSD auch noch ein paar Zusatzfunktionen:

  • rcctl start|stop|status daemon_name verhält sich “wie gewohnt”.
  • rcctl enable daemon_name aktiviert den automatischen Start beim Boot.
  • und rcctl disable daemon_name deaktiviert die Ausführung des Scripts.

Fazit

OpenBSD weicht somit vom Verhalten von Free/NetBSD ab, tut dies aber in einer mir sehr sympathischen Art und Weise.

Wenn ein minimales Init-Script nur noch so aussieht:

 1#!/bin/sh
 2
 3daemon="/usr/local/bin/myserviced"
 4daemon_flags="--optional_daemon_flag=value"
 5
 6. /etc/rc.d/rc.subr
 7rc_start() {
 8  ${rcexec} ${daemon} ${daemon_flags} &
 9}
10
11rc_cmd $1

dann hat OpenBSD für mich eindeutig den Init-Script-Contest gewonnen.

Wie auch immer … im GATE Framework sind meine Prozesse ja eigenverantwortlich, somit nutzen die 3 Funktionen meinen Daemon-Prozess selbst um den Status zu ermitteln.

📧 📋 🐘 | 🔔
 

Meine Dokus über:
 
Weitere externe Links zu:
Alle extern verlinkten Webseiten stehen nicht in Zusammenhang mit opengate.at.
Für deren Inhalt wird keine Haftung übernommen.



Wenn sich eine triviale Erkenntnis mit Dummheit in der Interpretation paart, dann gibt es in der Regel Kollateralschäden in der Anwendung.
frei zitiert nach A. Van der Bellen
... also dann paaren wir mal eine komplexe Erkenntnis mit Klugheit in der Interpretation!