Desativa um serviço de iniciar em todos os runlevels?

54

Eu tenho um serviço foo que atualmente começa no nível de execução 3 e acima. Como posso impedi-lo de fazer isso, sem usar update-rc.d foo stop 3 . , que (se eu entendi corretamente) desligaria o serviço em cada alteração de nível de execução.

(ou seja, se eu estava no nível de execução 1 e habilitei foo , então quando eu mudei para o nível de execução 3 seria desabilitado, não?)

Executando o Debian GNU / Linux Lenny.

    
por lfaraone 26.06.2009 / 22:21

11 respostas

52

O termo "stop" não impede que o daemon seja iniciado, mas o encerra ao digitar o nível de execução especificado.

Se você quiser apenas remover um serviço / daemon de um único nível de execução, update-rc.d como indicado bei freiheit ou simplesmente removerá o link simbólico do /etc/rcX.d/ , onde X é o seu runlevel. Se você não quiser que o serviço seja iniciado automaticamente, update-rc.d -f foo remove fará o truque.

    
por 09.07.2009 / 14:56
51

Configure os aplicativos de inicialização do Linux com sysv-rc-conf :

apt-get install sysv-rc-conf

Como outros apontaram, aqui também está update-rc.d para a linha cmd.

Por exemplo, execute

update-rc.d apache2 disable

para desativar o apache2 em todos os níveis de execução.

    
por 27.06.2009 / 01:28
14

Curto:

Não há uma maneira confiável de fazer isso rapidamente.

Longo:

O Debian atual (Debian instável a partir de 2012-06-01) atualmente não possui um modo confiável de desativar um serviço / daemon de forma consistente. - Porque um upgrade de um pacote daemon executa incondicionalmente “/etc/init.d/package restart”, tendo ele desabilitado para este runlevel ou não.

Para garantir que um daemon não seja iniciado, você pode:

  • desinstalá-lo
  • crie um desvio local do script /etc/init.d/xyz (assim, nenhuma ferramenta irá encontrá-lo)
  • use / abuse de um arquivo de configuração do pacote correspondente para provocar uma saída antecipada desse script (por exemplo, coloque uma "saída" no início de / etc / default / xyz caso seja originado do script de inicialização)
  • procure nesse script de inicialização por formas “oficiais” predefinidas de não iniciar esse daemon

Existe / was (?) alguma ação init-policy-something para scripts init no Debian, que deveria preencher essa funcionalidade ausente. - Eu tentei usá-lo, achei complicado, encontrei um bug e nunca toquei nele novamente.

Atualização:

Mude para "systemd", uma alternativa para "initd". Existe um pacote debian e você pode desativar um serviço com algo assim:

cd /etc/systemd/system
ln -s /dev/null xyz.service
    
por 03.06.2012 / 21:39
4

Execute este comando

apt-get instala o rcconf

Uma vez instalado, execute o rcconf no SSH e você receberá uma caixa de diálogo exibindo todos os serviços configurados para serem executados na inicialização. Selecione aqueles pressionando Space para desabilitar / habilitar o particular e pronto, simplesmente clique em Ok e esse serviço não se importará em começar novamente na próxima inicialização. Estando usando isso por anos. Ferramenta muito útil para usuários Debian / Ubuntu como eu.

    
por 28.08.2013 / 12:07
2

Estou confuso com o que você está tentando realizar.

Quais níveis de execução você deseja executar em foo?

Se você sempre quer que ele seja executado, use update-rc.d foo defaults ; que irá pará-lo em 0, 1 e 6, deixando-o rodando em 2, 3, 4 e 5. (1 não deve executar nada além de um shell, 0 e 6 são interrompidos e reiniciados)

Se você quiser especificar exatamente quais níveis de execução serão executados:

update-rc.d foo stop 0 1 6 3 . start 2 4 5 .
    
por 27.06.2009 / 00:56
2

Acho que isso faria o trabalho: insserv -r foo

    
por 15.11.2015 / 02:36
1

Comece a usar o insserv no Debian7

Saída de todos os serviços e informações de nível de execução

insserv --showall

Remova os scripts listados de todos os runlevels

insserv --remove [specify_script]
    
por 14.03.2017 / 18:45
0

O Bootup Manager do Ubuntu é do tipo sysv-rc-conf light , uma versão GUI mais amigável, e muitas pessoas que estão lendo este tópico apreciarão isso.

link

    
por 06.11.2009 / 09:05
0
sudo update-rc.d SERVICE disable

Se você quiser especificar níveis de execução.

sudo update-rc.d SERVICE disable|enable [S|2|3|4|5]

Lembre-se de mudar serviço para o nome do programa.

sudo service SERVICE restart
    
por 01.07.2017 / 11:46
0

Por que você não faz backup do script de inicialização em algum outro lugar e o remove no /etc/init.d/? Se o update-rc.d não funcionar.

    
por 01.07.2017 / 17:57
-1

Em um sistema baseado em Red Hat você pode usar

chkconfig httpd off
chkconfig httpd --del

para remover o servidor de runlevels

no sistema baseado no debian, todos os serviços devem ser iniciados pelos arquivos encontrados nos diretórios /etc/rc?.d/ esses arquivos, em seguida, possuem um link simbólico para os arquivos correspondentes no diretório /etc/init.d/. Se você deseja que um serviço não seja iniciado por padrão, você pode renomear / removê-lo do diretório /etc/rc?.d e sua alteração será preservada na atualização do pacote, desde que um dos links de início ainda apareça em um dos os outros diretórios (3,4 e 5). Ou você pode usar o comando update-rc.d para mudar o link (s) e se você quer iniciar o serviço depois disso você pode usar o /etc/init.d/service_name start se você deixar o início do fim ele será dar-lhe as opções que podem ser usadas como parar, reiniciar, recarregar ...

Eu acho que você pode usar o sysv-rc-conf para desativá-lo.

    
por 26.06.2009 / 22:30