Respostas:
Você pode alterar a ordem renomeando os links simbólicos em /etc/rcX.d/, em que x será o seu nível de execução.
Você verá vários arquivos começando com Sxx ou Kxx. Os links S são rastreados durante a inicialização, enquanto os K são analisados para desligamento. O xx aqui representa a ordem.
Mas esse pedido é definido por um motivo, portanto, tenha cuidado ao alterá-los. Por exemplo. O ntpd deve iniciar somente após a inicialização do subsistema de rede.
Em vez de fazê-lo manualmente, como sugerido nas outras respostas, você também pode alterar o script init. Basta adicionar uma linha ao cabeçalho:
# chkconfig: 35 90 10
Isso instruirá chkconfig
a adicionar o serviço aos níveis de execução 3 e 5, com uma posição inicial de 90 e uma posição final de 10.
chkconfig off servicename && chkconfig on servicename
Você quer ler um pouco sobre os diretórios runlevels e rc.d. Dentro dos diretórios rc.d, você pode encontrar os links S e K, como o S20apache K10apache, que é basicamente o que ordena a inicialização / desligamento de scripts.
Existem algumas mudanças sendo feitas nessa arquitetura, mas a maioria dos linuxes ainda a está usando.
rcorder
já existem há algum tempo.
svc
, mas poderia fazer sem as coisas xml
Se você chegou aqui, é provável que tenha dois serviços em que um depende do outro, mas, como eles estão começando na ordem errada, aquele com a dependência está falhando ao iniciar. As sugestões sobre a edição dos links simbólicos são informativas, em termos de ilustração de como a sequência de inicialização é executada, e funcionariam bem até que alguém fizesse um "chkconfig on" em seu serviço, no ponto em que os links simbólicos seriam recriados como originalmente. Realmente, você quer lidar com o problema no nível do script init, que é realmente muito menos complicado de fazer. Também será consistente nos diferentes níveis de execução. Você provavelmente não precisará adicionar uma linha "# chkconfig" como sugerido na resposta 4, pois provavelmente já haverá uma linha semelhante.
Vou usar um exemplo de servidor executando o Openldap (slapd) com um banco de dados MySQL (mysqld). A configuração desse par, e por que você pode querer, é outra história.
Na inicialização, o Openldap falha ao iniciar porque depende do MySQL e a sequência de inicialização tenta iniciar antes dele - slapd tem a posição 27 e mysqld a posição 64
Os links simbólicos relevantes em /etc/rc3.d/ são
S27slapd -> ../init.d/slapd
and
S64mysqld -> ../init.d/mysqld
Eu procuro valores definidos nos dois scripts 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
Eu edito a linha chkconfig em /etc/rc.d/init.d/slapd para ter uma posição inicial maior que a de /etc/rc.d/init.d/mysqld (eu escolhi 85)
[root ~]# grep chkconfig /etc/rc.d/init.d/slapd
# chkconfig: - 85 73
Eu faço "chkconfig slapd on" e checo novamente os links simbólicos
[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
Agora, quando este servidor inicia, o mysqld inicia antes do slapd e está tudo certo com o mundo.