Lernen Sie Linux kennen: Das Verzeichnis /etc/init.d

Versuchen Sie Unser Instrument, Um Probleme Zu Beseitigen

Wenn Sie Linux verwenden, haben Sie höchstwahrscheinlich von dem gehört init.d Verzeichnis. Aber was genau macht dieses Verzeichnis? Es macht letztendlich eine Sache, aber es macht diese eine Sache für Ihr gesamtes System, also init.d ist sehr wichtig. Das init.d Das Verzeichnis enthält eine Reihe von Start / Stopp-Skripten für verschiedene Dienste auf Ihrem System. Alles von säurehaltig zu x11-common wird von diesem Verzeichnis aus gesteuert. Natürlich ist es nicht gerade so einfach.

Wenn Sie sich die ansehen /etc Verzeichnis finden Sie Verzeichnisse, die im Formular sind rc # .d (Wobei # eine Zahl ist, die eine bestimmte Initialisierungsstufe widerspiegelt - von 0 bis 6). In jedem dieser Verzeichnisse befindet sich eine Reihe anderer Skripte, die Prozesse steuern. Diese Skripte beginnen entweder mit einem 'K' oder einem 'S'. Alle 'K'-Skripte werden vor' S'-Skripten ausgeführt. Und je nachdem, wo sich die Skripte befinden, wird bestimmt, wann die Skripte gestartet werden. Zwischen den Verzeichnissen arbeiten die Systemdienste wie eine gut geölte Maschine zusammen. Es gibt jedoch Situationen, in denen Sie einen Prozess sauber und ohne Verwendung der Befehle kill oder killall starten oder stoppen müssen. Dort ist die /etc/init.d Verzeichnis ist praktisch.

Wenn Sie jetzt eine Distribution wie Fedora verwenden, finden Sie dieses Verzeichnis möglicherweise in /etc/rc.d/init.d . Unabhängig vom Standort dient es dem gleichen Zweck.

Um eines der Skripte in zu steuern init.d manuell müssen Sie root (oder sudo) Zugriff haben. Jedes Skript wird als Befehl ausgeführt und die Struktur des Befehls sieht folgendermaßen aus:

/etc/init.d/command OPTION

Wo Befehl ist der eigentliche Befehl zum Ausführen und MÖGLICHKEIT kann eine der folgenden sein:

  • Anfang
  • halt
  • neu laden
  • Neustart
  • Force-Reload

Meistens werden Sie entweder verwenden Start stop, oder Neustart. Wenn Sie also Ihr Netzwerk stoppen möchten, können Sie den folgenden Befehl ausführen:

/etc/init.d/networking stop

Wenn Sie Änderungen an Ihrem Netzwerk vornehmen und es neu starten müssen, können Sie dies mit dem folgenden Befehl tun:

/etc/init.d/networking Neustart

Einige der gebräuchlichsten Init-Skripte in diesem Verzeichnis sind:

  • Vernetzung
  • Samba
  • apache2
  • ftpd
  • sshd
  • Taubenschlag
  • MySQL

Natürlich enthält Ihr Verzeichnis möglicherweise häufiger verwendete Skripte - dies hängt davon ab, was Sie installiert haben. Die obige Liste stammt aus einer Ubuntu Server 8.10-Installation, sodass eine Standard-Desktop-Installation einige weniger Skripte vom Typ Netzwerk enthält.

Aber was ist mit /etc/rc.local?

Es gibt eine dritte Option, die ich früher ziemlich oft benutzt habe. Diese Option ist die /etc/rc.local Skript. Diese Datei wird ausgeführt, nachdem alle anderen Skripts auf Init-Ebene ausgeführt wurden. Daher können Sie sicher verschiedene Befehle eingeben, die Sie beim Start ausgegeben haben möchten. Oft werde ich in dieses Skript Montageanweisungen für Dinge wie nfs einfügen. Dies ist auch ein guter Ort, um Skripte zur Fehlerbehebung zu platzieren. Zum Beispiel, als ich einmal einen Computer hatte, den Samba aus irgendeinem Grund nicht starten wollte. Überprüfen Sie sogar noch einmal, ob der Samba-Daemon so eingerichtet ist, dass er beim Booten initialisiert wird. Anstatt meine ganze Zeit im Voraus damit zu verbringen, habe ich einfach die Zeile gesetzt:

/etc/init.d/samba start

in dem /etc/rc.local Drehbuch und Samba wirkten wie ein Zauber. Irgendwann würde ich zurückkommen und dieses Problem beheben.

Abschließende Gedanken

Linux ist flexibel. Linux ist so flexibel, dass es fast zwangsläufig zahlreiche Möglichkeiten gibt, ein einzelnes Problem zu lösen. Das Starten eines Systemdienstes ist ein solches Problem. Mit Hilfe der /etc/init.d System (sowie /etc/rc.local ) Sie können sich ziemlich sicher sein, dass Ihr Dienst startet.