Risposte:
È possibile modificare l'ordine rinominando i collegamenti simbolici in /etc/rcX.d/ dove x sarà il livello di esecuzione.
Vedrai un mucchio di file che iniziano con Sxx o Kxx. I collegamenti S vengono tracciati durante l'avvio mentre quelli K vengono analizzati per l'arresto. La xx qui rappresenta l'ordine.
Ma questo ordine è impostato per un motivo, quindi fai attenzione mentre li cambi. Per esempio. ntpd dovrebbe iniziare solo dopo l'inizializzazione del sottosistema di rete.
Invece di farlo manualmente, come suggerito nelle altre risposte, puoi anche cambiare lo script di init. Basta aggiungere una tale riga all'intestazione:
# chkconfig: 35 90 10
Questo indicherà chkconfig
di aggiungere il servizio ai runlevel 3 e 5, con una posizione iniziale di 90 e una posizione di uccisione di 10.
chkconfig off servicename && chkconfig on servicename
Vuoi leggere qualcosa sui tuoi runlevel e directory rc.d. All'interno delle directory rc.d è possibile trovare i collegamenti S e K, come S20apache K10apache, che è fondamentalmente ciò che ordina l'avvio / arresto degli script.
Ci sono alcune modifiche in corso su questa architettura ma la maggior parte dei Linux la sta ancora usando.
rcorder
sono in circolazione da un po 'di tempo.
svc
certo senso invidio Solaris , ma potrei fare a meno della roba xml
Se sei arrivato qui, è probabile che tu abbia due servizi in cui uno dipende dall'altro ma, poiché stanno iniziando nell'ordine sbagliato, quello con la dipendenza non riesce ad avviarsi. I suggerimenti sulla modifica dei collegamenti simbolici sono informativi, in termini di illustrare il modo in cui viene eseguita la sequenza di avvio, e funzionerebbero bene fino a quando qualcuno non eseguisse un "chkconfig on" sul tuo servizio, a quel punto i collegamenti simbolici sarebbero stati ricreati come erano in origine. Davvero, vuoi affrontare il problema a livello di script di init, che in realtà è molto meno complicato da fare comunque. Sarà inoltre coerente tra i diversi runlevel. Probabilmente non avrai bisogno di aggiungere una riga "# chkconfig" come suggerito nella risposta 4 in quanto probabilmente ci sarà già una riga simile.
Userò un esempio di un server che esegue Openldap (slapd) con un back-end del database MySQL (mysqld). Configurare quella coppia, e perché potresti volerlo, è tutta un'altra storia.
All'avvio, Openldap non si avvia perché dipende da MySQL e la sequenza di avvio ha tentato di avviarsi prima di esso - slapd ha la posizione 27 e mysqld ha la posizione 64
I relativi collegamenti simbolici in /etc/rc3.d/ sono
S27slapd -> ../init.d/slapd
and
S64mysqld -> ../init.d/mysqld
Cerco i valori impostati nei due script init:
[root ~]# grep chkconfig /etc/rc.d/init.d/mysqld
# chkconfig: - 64 36
[root ~]# grep chkconfig /etc/rc.d/init.d/slapd
# chkconfig: - 27 73
Modifico la riga chkconfig in /etc/rc.d/init.d/slapd per avere una posizione iniziale superiore a quella in /etc/rc.d/init.d/mysqld (ho scelto 85)
[root ~]# grep chkconfig /etc/rc.d/init.d/slapd
# chkconfig: - 85 73
Faccio "chkconfig slapd on" e ricontrollo dei collegamenti simbolici
[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
Ora, quando questo server si avvia, mysqld si avvia prima di slapd e va tutto bene per il mondo.