GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Init-System mit der Shell erkennen?

Dies hat vielleicht mehr mit der Erkennung von Betriebssystemen zu tun, aber ich brauche speziell das derzeit auf dem System verwendete Init-System.

Fedora 15 und Ubuntu verwenden jetzt systemd, Ubuntu verwendete früher Upstart (lange Standardeinstellung bis 15.04), während andere Variationen von System V verwenden.

Ich habe eine Anwendung, die ich schreibe, um ein plattformübergreifender Daemon zu sein. Die Init-Skripte werden dynamisch generiert, basierend auf Parametern, die beim Konfigurieren übergeben werden können.

Ich möchte nur das Skript für das jeweilige Init-System generieren, das sie verwenden. Auf diese Weise kann das Installationsskript vernünftigerweise ohne Parameter als root ausgeführt und der Daemon automatisch „installiert“ werden.

Das habe ich mir ausgedacht:

  • Suchen Sie in /bin nach systemd, upstart usw.
  • Vergleiche /proc/1/comm mit systemd, upstart usw.
  • Fragen Sie den Nutzer

Was wäre der beste plattformübergreifende Weg, dies zu tun?

Art verwandt, Kann ich mich darauf verlassen, dass bash auf der Mehrheit von * nix ist, oder ist es von der Distribution/vom Betriebssystem abhängig?

Zielplattformen:

  • Mac OS
  • Linux (alle Distributionen)
  • BSD (alle Versionen)
  • Solaris, Minix und andere *nix

Akzeptierte Antwort:

Bei der zweiten Frage lautet die Antwort nein und Sie sollten einen Blick auf Ressourcen für portable Shell-Programmierung werfen.

Was den ersten Teil angeht – zuallererst müssen Sie sicherlich vorsichtig sein. Ich würde sagen, führen Sie mehrere Tests durch, um sicherzugehen – weil die Tatsache, dass jemand hat systemd (zum Beispiel) installiert ist, bedeutet dies nicht, dass es tatsächlich als Standard-init verwendet wird . Sehen Sie sich auch /proc/1/comm an kann irreführend sein, da einige Installationen verschiedener Init-Programme automatisch /sbin/init erstellen können ein Symlink-Hardlink oder sogar eine umbenannte Version ihres Hauptprogramms.

Vielleicht ist es am nützlichsten, sich den Typ der Init-Skripte anzusehen – denn das sind die Dinge, die Sie tatsächlich erstellen werden, egal, was sie ausführt.

Als Randbemerkung können Sie sich auch OpenRC ansehen, das darauf abzielt, eine Struktur von Init-Skripten bereitzustellen, die sowohl mit Linux- als auch mit BSD-Systemen kompatibel ist.


Linux
  1. Was ist der aktuelle Runlevel des Linux-Systems?

  2. Wie teste ich, welche Shell ich in einem Terminal verwende?

  3. Was sind die verschiedenen Arten von Shells in Linux?

  4. Was ist der einfachste Weg zu SSH mit Python?

  5. Welchen Umfang haben exportierte Unix-Shell-Variablen?

Lernen Sie Ihr System kennen (über die Befehlszeile)

Was ist die Shell unter Linux?

So ändern Sie die Standard-Shell im Linux-System

Was ist der Unterschied zwischen Login- und Non-Login-Shell

Was ist eine .sh-Datei?

Was ist die Standard-Shell von Busybox?