Lösung 1:
Anstatt es manuell zu tun, wie in den anderen Antworten vorgeschlagen, können Sie auch das Init-Skript ändern. Fügen Sie einfach eine solche Zeile zum Header hinzu:
# chkconfig: 35 90 10
Dies weist chkconfig
an um den Dienst zu den Runleveln 3 und 5 hinzuzufügen, mit einer Startposition von 90 und einer Kill-Position von 10.
Lösung 2:
Sie können die Reihenfolge ändern, indem Sie die Symlinks unter /etc/rcX.d/ umbenennen, wobei x Ihr Runlevel ist.
Sie sehen eine Reihe von Dateien, die mit Sxx oder Kxx beginnen. S-Links werden während des Starts verfolgt, während die K-Links für das Herunterfahren analysiert werden. Das xx steht hier für die Reihenfolge.
Aber diese Reihenfolge ist aus einem bestimmten Grund festgelegt, seien Sie also vorsichtig, wenn Sie sie ändern. ntpd sollte erst starten, nachdem das Netzwerk-Subsystem initialisiert wurde.
Lösung 3:
Sie möchten ein wenig über Ihre Runlevels und rc.d-Verzeichnisse lesen. In den rc.d-Verzeichnissen finden Sie die S- und K-Links, wie S20apache K10apache, das ist im Grunde das, was das Starten/Herunterfahren von Skripten anordnet.
Es werden einige Änderungen an dieser Architektur vorgenommen, aber die meisten Linux verwenden sie immer noch.
Lösung 4:
Wenn Sie hier angekommen sind, haben Sie wahrscheinlich zwei Dienste, von denen einer vom anderen abhängt, aber weil sie in der falschen Reihenfolge beginnen, startet der eine mit der Abhängigkeit nicht. Vorschläge zum Bearbeiten der Symlinks sind informativ, um zu veranschaulichen, wie die Startsequenz ausgeführt wird, und würden gut funktionieren, bis jemand eine "chkconfig on" auf Ihrem Dienst ausführt, an welcher Stelle die Symlinks so neu erstellt würden, wie sie ursprünglich waren. Wirklich, Sie möchten das Problem auf der Init-Skript-Ebene behandeln, was ohnehin viel weniger chaotisch ist. Es wird auch über die verschiedenen Runlevel hinweg konsistent sein. Sie müssen wahrscheinlich keine "# chkconfig"-Zeile hinzufügen, wie in Antwort 4 vorgeschlagen, da dort wahrscheinlich bereits eine ähnliche Zeile vorhanden ist.
Ich verwende ein Beispiel für einen Server, auf dem Openldap (slapd) mit einem MySQL-Datenbank-Backend (mysqld) ausgeführt wird. Die Konfiguration dieses Paares und warum Sie das vielleicht möchten, ist eine ganz andere Geschichte.
Beim Booten kann Openldap nicht starten, weil es von MySQL abhängt und die Startsequenz versucht, davor zu starten – slapd hat Position 27 und mysqld hat Position 64
Die relevanten Symlinks in /etc/rc3.d/ sind
S27slapd -> ../init.d/slapd
and
S64mysqld -> ../init.d/mysqld
Ich suche nach Werten, die in den beiden Init-Skripten festgelegt sind:
[root ~]# grep chkconfig /etc/rc.d/init.d/mysqld
# chkconfig: - 64 36
[root ~]# grep chkconfig /etc/rc.d/init.d/slapd
# chkconfig: - 27 73
Ich bearbeite die chkconfig-Zeile in /etc/rc.d/init.d/slapd, um eine Startposition höher als die in /etc/rc.d/init.d/mysqld zu haben (ich habe 85 gewählt)
[root ~]# grep chkconfig /etc/rc.d/init.d/slapd
# chkconfig: - 85 73
Ich mache "chkconfig slapd on" und überprüfe die Symlinks erneut
[root ~]# chkconfig slapd on
[root ~]# ls -l /etc/rc3.d/ | grep mysqld
lrwxrwxrwx 1 root root 16 Dec 10 13:45 S64mysqld -> ../init.d/mysqld
[root ~]# ls -l /etc/rc3.d/ | grep slapd
lrwxrwxrwx 1 root root 15 Apr 28 14:18 S85slapd -> ../init.d/slapd
Wenn dieser Server jetzt hochfährt, startet mysqld vor slapd und alles ist in Ordnung mit der Welt.