Ist es möglich, tragbare Dienstskripte zur Steuerung eines Daemons zu schreiben?

7

Ich (oder einer meiner Kollegen) muss ein oder mehrere Shell-Skripte schreiben, um die Ausführung eines Daemons zu steuern. Wir müssen in der Lage sein, den Dämon zu starten, ihn anzuweisen, ordnungsgemäß herunterzufahren und ein Herunterfahren zu erzwingen. Im Grunde ist es die Art von Dingen, für die man traditionell ein Skript verwenden würde /etc/init.d.

Wir werden auf Ubuntu bereitstellen. Möglicherweise möchten wir RedHat / CentOS und möglicherweise AIX bereitstellen. Ich möchte die Möglichkeit haben, auf jedem Unix bereitzustellen, weil ich es mag, Dinge portabel zu machen.

Ist es also möglich, tragbare Service-Skripte zu schreiben?

Ich nehme an, ich kann ein portables Bourne-Shell-Skript schreiben, das wie ein normales init.d-Skript funktioniert und 'start' und 'stop' als Befehle akzeptiert. Das würde überall funktionieren und eine natürliche Schnittstelle auf mindestens Debian- und RedHat-Systemen bieten. Würde es woanders passen? Ist init.d universell? Gibt es Fallstricke, auf die Sie achten müssen?

Gibt es Tools zum Generieren von Service-Skripten in verschiedenen Formen? Etwas, wo ich Skriptfragmente zum Starten und Stoppen schreiben und das Tool Skripte für verschiedene Plattformen erstellen lassen kann.

Gibt es Alternativen zu plattformspezifischen Service-Skript-Konventionen? Ich bin auf Daemontools und Runit gestoßen . sind diese Alternativen zu init.d-Skripten? Sind sie gut? Was gibt es sonst noch so?

Ist das sinnvoll?

Tom Anderson
quelle
1
Es gibt jetzt ein LSB (Linux Standard Base) für solche Dinge ... vielleicht möchten Sie sich das ansehen.
Xenoterracide
Band VIII. Die Systeminitialisierung enthält einige Abschnitte zu Init-Skripten. Zumindest Init-Skripte sind also Standard in Linux-Distributionen.
Tom Anderson

Antworten:

1

Es ist möglich, sie so zu schreiben, dass sie nicht von den Besonderheiten der Distribution abhängen, sondern nicht alle * nix-Startdienste auf dieselbe Weise. Ich bin mir bei AIX nicht sicher, aber Solaris verwendet zum Beispiel nicht einmal sysvinit, sondern smf.

CentOS / RHEL verwendet normalerweise /etc/rc.d/functions, um allgemeine Funktionen für das Init-Skript zu unterstützen, während Debian eine Binärdatei namens Start-Stop-Daemon verwendet. Dies ist wahrscheinlich ein Grund dafür, dass Init-Skripte in Upstream-Paketen häufig nicht gefunden werden.

Persönlich würde ich für jedes unterstützte Betriebssystem ein Init-Skript schreiben, das in das Paket dieses Betriebssystems aufgenommen wird.

Jordanm
quelle
Das LSB schreibt eine Datei vor, /lib/lsb/init-functionsdie einige Standardfunktionen enthält. Ich denke, diese Wrap-Dinge mögen start-stop-daemon, also gibt es dort ein gewisses Maß an Portabilität. Die Dokumentation zu diesen Funktionen ist jedoch sehr schlecht.
Tom Anderson
Und ja, ich arbeite noch daran!
Tom Anderson