Entgegen einiger "Ratschläge" die man immer wieder liest, werden die Dienste und Daemonen unter OpenBSD nicht durch editieren der /etc/rc.conf verwaltet, sondern ausnahmslos mit rcctl(8)!

Start von rcctl(8)

Die Dienste werden seit OpenBSD 5.7 mit rcctl(8) verwaltet. Das ist ein Shellscript für die KSH, mit dem man die Dienste starten, stoppen, neustarten, .. kann. Der Aufruf ist denkbar einfach:

$ rcctl start httpd

würde z. B. den hauseigenen HTTP-Server von OpenBSD starten, jedoch ist das noch lange nicht alles.

Optionen und Parameter

Man kann rcctl(8) noch diverse Optionen und Parameter übergeben:

-d

Ermöglicht debugging und gibt ggf. Fehlermeldungen auf STDOUT aus

-f

Ist vergleichbar mit --force; hier wird der Dienst gestartet, auch wenn in der /etc/rc.conf die Flag für den Dienst auf NO gesetzt ist.

disable service

Ist ein Alias für "set daemon status off"

enable service

Ist ein Alias für "set daemon status on"

get service [variable]

Zeigt die Parameter an, mit der der Dienst gestartet wurde

getdef service [variable]

Wie get, jedoch werden hier die Defaultwerte angezeigt

ls lsarg

Hiermit kann man sich einen Überblick über die Dienste verschaffen, wobei hier mehrere Parameter zur Verfügung stehen:

  • all: Zeigt alle Dienste und Daemonen an

  • failed: Aktivierte, aber gestoppte Dienste

  • off: Deaktivierte Dienste

  • on: Aktivierte Dienste

  • started: Laufende Dienste

  • stopped: Gestoppte Dienste

order daemon..

Hier kann man die Reihenfolge angeben

set service | daemon variable [optionen]

Bei Daemons wird die Variable auf einen bestimmten Wert gesetzt bzw. geändert, wobei die Variable status auf on oder off gesetzt werden muss. Variablen können folgende sein: flags, status, timeout und user

Parameter

Es stehen folgende Parameter zur Verfügung:

  • start: Startet den Dienst falls er noch nicht läuft

  • stop: Stopt den Dienst falls erläuft

  • reload: Weist den Daemon an die zu ihm gehörende Konfigurationsdatei neu einzulesen

  • restart: Hier wird der Daemon zuerst gestoppt und anschließend gestartet

  • check: Prüft ob der Dienst läuft. Wenn ja, ist der exit-status == 0 und wenn nicht, == 1

Beispiele

Hier einige Beispiele. # ist ein Kommentar und hat nichts mit der Eingabe zu tun und $ steht für den Prompt der Shell:

# nginx starten
  $ rcctl start nginx
# nginx beim Booten starten
  $ rcctl enable nginx
# Prüfen ob ngnix läuft
  $ rcctl check nginx
  nginx(ok)
# Prüfen mit welchen Standardeinstellungen ngnix gestartet wurde
  $ rcctl getdef nginx
# Jetzt die aktuellen Einstellungen anzeigen
  $ rcctl get nginx
# Den "nginx_timeout" auf 60 Sekunden erhöhen
  $ rcctl set nginx timeout 60
# Die Startreihenfolge der Dienste anzeigen:
  $ rcctl order
  nginx php70_fpm
# Die Startreihenfolge ändern; in dem Fall zuerst php70_fpm und dann ngnix
  $ rcctl order php70_fpm nginx
  $ rcctl order
  php70_fpm nginx
# ntpd beim Booten starten
  $ rcctl enable ntpd
# ntpd die Option "-s" beim Start übergeben
  $ rcctl set ntpd flags -s
# Und das jetzt noch prüfen
  $ rcctl get ntpd flags
  -s
# Alle Dienste anzeigen, die gestartet wurden
  $ rcctl ls on