Antworten:
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 Startvorgangs verfolgt, während die K-Links zum Herunterfahren analysiert werden. Das xx steht hier für die Reihenfolge.
Diese Reihenfolge ist jedoch aus einem bestimmten Grund festgelegt. Seien Sie also vorsichtig, wenn Sie sie ändern. ntpd sollte erst nach der Initialisierung des Netzwerksubsystems gestartet werden.
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 in die Kopfzeile ein:
# chkconfig: 35 90 10
Dadurch wird angewiesen chkconfig
, den Dienst den Runleveln 3 und 5 mit einer Startposition von 90 und einer Killposition von 10 hinzuzufügen.
chkconfig off servicename && chkconfig on servicename
Sie möchten ein wenig über Ihre lesen Runlevel- und RCD- Verzeichnisse lesen . In den rc.d-Verzeichnissen finden Sie die S- und K-Links, wie z. B. S20apache K10apache. Dies ist im Grunde genommen der Befehl zum Starten / Herunterfahren von Skripten.
Es werden einige Änderungen an dieser Architektur vorgenommen, die meisten Linux-Systeme verwenden sie jedoch weiterhin.
rcorder
gibt es schon länger.
svc
, könnte aber auf das XML-Zeug verzichten
Wenn Sie hier angekommen sind, haben Sie wahrscheinlich zwei Dienste, bei denen einer vom anderen abhängt. Da der Start jedoch in der falschen Reihenfolge erfolgt, kann der mit der Abhängigkeit nicht gestartet werden. Vorschläge zum Bearbeiten der Symlinks sind informativ und veranschaulichen, wie die Startsequenz ausgeführt wird. Sie funktionieren, bis jemand eine "chkconfig on" für Ihren Dienst ausführt und die Symlinks wieder wie ursprünglich erstellt werden. Wirklich, Sie möchten sich mit dem Problem auf der Ebene des Init-Skripts befassen, das eigentlich sowieso weniger umständlich 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 es vielleicht möchten, ist eine ganz andere Geschichte.
Beim Booten startet Openldap nicht, da es von MySQL abhängt und die Startsequenz versucht, es zu starten, bevor es gestartet wird - 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 so, dass sie eine höhere Startposition hat als die in /etc/rc.d/init.d/mysqld (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 hochfährt, startet mysqld vor slapd und alles ist in Ordnung mit der Welt.