Odpowiedzi:
Możesz zmienić kolejność, zmieniając nazwy dowiązań symbolicznych w /etc/rcX.d/, gdzie x będzie poziomem uruchomienia.
Zobaczysz kilka plików zaczynających się od Sxx lub Kxx. Łącza S są śledzone podczas uruchamiania, podczas gdy łącza K są analizowane pod kątem zamknięcia. Tutaj xx oznacza kolejność.
Ale ta kolejność jest ustalona z jakiegoś powodu, więc bądź ostrożny podczas ich zmiany. ntpd powinien uruchomić się dopiero po zainicjowaniu podsystemu sieciowego.
Zamiast robić to ręcznie, jak sugerowano w innych odpowiedziach, możesz także zmienić skrypt inicjujący. Po prostu dodaj taką linię do nagłówka:
# chkconfig: 35 90 10
Spowoduje to chkconfig
dodanie usługi do poziomów uruchamiania 3 i 5, z pozycją początkową 90 i pozycją zabicia 10.
chkconfig off servicename && chkconfig on servicename
Chcesz poczytać trochę o swoich poziomach pracy i katalogach rc.d. W katalogach rc.d można znaleźć łącza S i K, takie jak S20apache K10apache, czyli w zasadzie to, co nakazuje uruchamianie / zamykanie skryptów.
Wprowadzono pewne zmiany w tej architekturze, ale większość linuksów nadal z niej korzysta.
rcorder
są już od jakiegoś czasu.
svc
, ale mógłbym obejść się bez XML-a
Jeśli przyjechałeś tutaj, są szanse, że masz dwie usługi, w których jedna zależy od drugiej, ale ponieważ zaczynają się w niewłaściwej kolejności, ta z zależnością nie uruchamia się. Sugestie dotyczące edytowania dowiązań symbolicznych mają charakter informacyjny, jeśli chodzi o zilustrowanie przebiegu sekwencji startowej i działałyby w porządku, dopóki ktoś nie wykonałby „chkconfig” w Twojej usłudze, w którym to momencie dowiązania symboliczne zostałyby ponownie utworzone tak, jak były pierwotnie. Naprawdę, chcesz poradzić sobie z tym problemem na poziomie skryptu inicjującego, co i tak jest o wiele mniej skomplikowane. Będzie również spójny na różnych poziomach działania. Prawdopodobnie nie będziesz musiał dodawać wiersza „# chkconfig”, jak sugerowano w odpowiedzi 4, ponieważ prawdopodobnie już tam będzie podobna linia.
Wykorzystam przykład serwera z uruchomionym Openldap (slapd) z backendem bazy danych MySQL (mysqld). Konfiguracja tej pary i dlaczego możesz chcieć, to zupełnie inna historia.
Podczas uruchamiania Openldap nie uruchamia się, ponieważ zależy od MySQL, a sekwencja uruchamiania próbuje go uruchomić przed nim - slapd ma pozycję 27, a mysqld ma pozycję 64
Odpowiednie dowiązania symboliczne w /etc/rc3.d/ to
S27slapd -> ../init.d/slapd
and
S64mysqld -> ../init.d/mysqld
Szukam wartości ustawionych w dwóch skryptach inicjujących:
[root ~]# grep chkconfig /etc/rc.d/init.d/mysqld
# chkconfig: - 64 36
[root ~]# grep chkconfig /etc/rc.d/init.d/slapd
# chkconfig: - 27 73
Edytuję linię chkconfig w /etc/rc.d/init.d/slapd, aby mieć pozycję początkową wyższą niż ta w /etc/rc.d/init.d/mysqld (wybrałem 85)
[root ~]# grep chkconfig /etc/rc.d/init.d/slapd
# chkconfig: - 85 73
Robię „chkconfig slapd on” i ponownie sprawdzam dowiązania symboliczne
[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
Teraz, kiedy ten serwer się uruchamia, mysqld uruchamia się przed slapd i wszystko jest w porządku ze światem.