Como alterar a inicialização / ordem de inicialização dos serviços Linux?

11

Como a questão é clara no título, como altero a inicialização / ordem de inicialização dos serviços Linux?

    
por Gnanam 30.08.2010 / 13:57

4 respostas

10

Você pode alterar a ordem renomeando os links simbólicos em /etc/rcX.d/, onde x será seu nível de execução.

Você verá vários arquivos começando com Sxx ou Kxx. S links 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 depois que o subsistema de rede for inicializado.

    
por 30.08.2010 / 14:35
19

Em vez de fazê-lo manualmente, como sugerido nas outras respostas, você também pode alterar o script de inicialização. Basta adicionar essa linha ao cabeçalho:

# chkconfig: 35 90 10

Isso instruirá chkconfig para adicionar o serviço aos runlevels 3 e 5, com uma posição inicial de 90 e uma posição de kill de 10.

    
por 22.04.2015 / 10:52
7

Você deseja ler um pouco sobre seus 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 dos scripts.

Há algumas mudanças sendo feitas nessa arquitetura, mas a maioria dos linuxes ainda está usando.

    
por 30.08.2010 / 14:33
7

Se você chegou aqui, é provável que você tenha dois serviços em que um depende do outro, mas, como estão começando na ordem errada, o que está com a dependência está falhando em iniciar. Sugestões sobre como editar os links simbólicos são informativas, em termos de ilustrar como a seqüência de inicialização é executada, e funcionariam bem até que alguém fizesse um "chkconfig on" em seu serviço, ponto no qual os links simbólicos seriam recriados como eram originalmente. Realmente, você quer lidar com o problema no nível do script de inicialização, que na verdade é muito menos confuso. 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 um servidor executando o Openldap (slapd) com um banco de dados MySQL (mysqld). Configurar esse par e por que você pode querer é uma outra história.

Na inicialização, o Openldap falha ao iniciar porque depende do MySQL e a sequência de inicialização tenta iniciá-lo antes dele - o slapd tem a posição 27 e o mysqld tem 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 configurados nos dois scripts de inicialização:

[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 do /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 vejo 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 é inicializado, o mysqld é iniciado antes do slapd e está tudo certo com o mundo.

    
por 28.04.2016 / 15:35