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.
Este. Absolutamente isso. Se você renomear manualmente os links simbólicos você vai ter uma surpresa se alguém vem e correchkconfig off servicename && chkconfig on servicename
batfastad
Funcionou como um encanto. Eu precisava configurar dependências entre o mysqld e um contêiner de servlet. Não consegui descobrir a posição inicial do mysqld, então configurei a posição inicial do contêiner do servlet para 99 e funciona muito bem, o mysqld é iniciado primeiro. Obrigado.
Jpangamarca
7
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.
Estou surpreso que a maioria das distros ainda use esse sistema; sistemas melhores rcorderjá existem há algum tempo.
Chris S
Eu meio que invejar solaris svc, mas poderia fazer sem as coisas xml
coredump
Este é o local. Dependendo da sua distribuição, no entanto, você pode ter maneiras diferentes de alterar esse valor - portanto, leia a documentação específica da sua distribuição.
Andrew M.
1
Algumas distribuições, como o Ubuntu, usam Upstart ( Wikipedia ).
Pausado até novo aviso.
7
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:
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.
fonte
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:
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.fonte
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.
fonte
rcorder
já existem há algum tempo.svc
, mas poderia fazer sem as coisas xmlSe 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
Eu procuro valores definidos nos dois scripts init:
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)
Eu faço "chkconfig slapd on" e checo novamente os links simbólicos
Agora, quando este servidor inicia, o mysqld inicia antes do slapd e está tudo certo com o mundo.
fonte