comportamento confuso dos Scripts de Iniciação LSB no Debian

6

Estou tendo um comportamento estranho com os Scripts de Iniciação LSB no Debian Wheezy. Eu posso demonstrar o problema no seguinte exemplo:

O script /etc/init.d/resolvconf começa em S e pára em runlevels 0 e 6 .

# Default-Start:     S
# Default-Stop:      0 6

E, de fato, quando eu uso o chkconfig resolvconf on para ativar o script, vejo que os links simbólicos foram criados nos respectivos diretórios de nível de execução:

$ ls /etc/rc?.d/*resolvconf
/etc/rc0.d/K02resolvconf
/etc/rc6.d/K02resolvconf
/etc/rcS.d/S13resolvconf

Quando desligo o script com chkconfig resolvconf off , os links simbólicos desaparecem. Até aí tudo bem.

Agora, decidi que não quero que o script comece em S (vou iniciá-lo manualmente), mas ainda quero que ele pare nos runlevels 0 e 6 . Eu altero a inicialização padrão de acordo:

# Default-Start:     
# Default-Stop:      0 6

e transforme o script em chkconfig resolvconf on . E nada acontece.

$ ls /etc/rc?.d/*resolvconf
ls: cannot access /etc/rc?.d/*resolvconf: No such file or directory

nenhum link simbólico foi criado e o script não é interrompido nos runlevels 0 e 6 .

O que está acontecendo aqui?

Como posso ter um script somente executado (parar) em runlevels 0 e 6 , sem iniciar em S ?

UPDATE

como sugerido por @Rui F Ribeiro, eu removi completamente a linha # Default-Start: . Agora, quando executo chkconfig resolvconf on , recebo erros de acompanhamento:

insserv: Script resolvconf is broken: incomplete LSB comment.
insserv: missing 'Default-Start:'  entry: please add even if empty.
insserv: Default-Start undefined, assuming empty start runlevel(s) for script 'resolvconf'

os links simbólicos são criados, no entanto.

$ ls /etc/rc?.d/*resolvconf
/etc/rc0.d/K02resolvconf
/etc/rc6.d/K02resolvconf

Mas por que recebo os erros?

    
por Martin Vegter 13.09.2016 / 16:22

1 resposta

4

chkconfig lê apenas as linhas "Início padrão" ao calcular os runlevels para scripts. Ele conta o número de níveis de execução e somente chama insserv se pelo menos um runlevel é solicitado em "Default-Start" ...

Soluções alternativas que evitam esse comportamento incluem:

  • ativando serviços com chkconfig -a ;
  • desativando serviços com chkconfig -d ;
  • usando insserv diretamente, insserv service para ativar service , insserv -r service para removê-lo.
por 13.09.2016 / 18:36