Desativar a inicialização de um serviço em todos os níveis de execução?

61

Eu tenho um serviço fooque atualmente inicia no nível de execução 3 e acima. Como posso impedi-lo de fazê-lo, sem usar update-rc.d foo stop 3 ., o que (se entendi corretamente) desativaria o serviço a cada alteração no nível de execução.

(ou seja, se eu estivesse no nível de execução 1 e ativado foo, quando eu mudei para o nível de execução 3, ele seria desativado, não?)

Executando o Debian GNU / Linux Lenny.

lfaraone
fonte

Respostas:

57

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

Se você quiser apenas para remover um serviço / daemon de um único nível de execução, update-rc.dcomo apontado bei freiheit ou simplesmente remover o link simbólico a partir /etc/rcX.d/, onde X é o seu nível de execução. Se você não deseja que o serviço inicie automaticamente, update-rc.d -f foo removeele fará o truque.

PEra
fonte
2
Alguma idéia de como fazê-lo no Debian 8? sudo update-rc.d -f sunrpc removenão funciona; ainda está presente após uma reinicialização.
Debian 9 Isso não estava funcionando para mim, e então eu percebi, oh derp, preciso do sudo. O update-rc.d não fornece comentários se você esquecer o sudo. Eu confirmei que os links foram emborals /etc/rc*.d
Jason Dunkelberger 29/04
O comando falhou no Ubuntu16.04
Stephane
Certifique-se de passar o nome correto do serviço, update-rc.d não fornece nenhum feedback se ele não existir.
marcovtwout
E se você deseja reativá-lo mais tarde? Abaixo, a resposta do @ Not Now é melhor, pois você pode desativar e reativar depois. update-rc.d apache2 disable
Wadih M.
54

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

apt-get install sysv-rc-conf

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

Por exemplo, execute

update-rc.d apache2 disable

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

Agora não
fonte
ótima ferramenta - não sabia disso. Obrigado!
Pera
11
note que este não vai parar o serviço em execução, para conseguir que você neet para adicionar este: service foo stopou reiniciar o servidor
rubo77
15

Baixo:

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

Longo:

O Debian atual (Debian instável a partir de 01/06/2012) atualmente não possui um caminho curto e confiável para desativar consistentemente um serviço / daemon. - Como uma atualização de um pacote daemon executa incondicionalmente “/etc/init.d/package restart”, desativando-o para este nível de execução ou não.

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

  • desinstale-o
  • faça um desvio local do script /etc/init.d/xyz (desta forma, nenhuma ferramenta o encontrará)
  • 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 originada no script init)
  • procure nesse script init maneiras "oficiais" predefinidas de não iniciar esse daemon

Existe / houve (?) Alguma etapa init-policy-something para scripts init no Debian, que deveria preencher essa funcionalidade ausente. - Tentei usá-lo, achei complicado, encontrei um bug e nunca mais o toquei.

Atualizar:

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

cd /etc/systemd/system
ln -s /dev/null xyz.service
Robert Siemer
fonte
11
+1 Esta é uma resposta tão útil - e se eu não tivesse acontecido, teria sido picada mais tarde - obrigado!
Você pode unlink xyz.servicetão bem?
Jaggedsoft #
@NextLocal, esqueci por que escrevi isso, mas acredito que se um serviço tiver scripts de inicialização do System V, systemdos usará. - Então o link diz para não procurá-los.
Robert Siemer
Observe que editar o /etc/default/xyzarquivo para adicionar um exitnão impedirá que o empacotador substitua o arquivo pela versão correta na próxima atualização. (O pacote salva os arquivos de configuração e, na maioria dos casos, os scripts init não são visualizados como tal.) Portanto, na maioria dos casos, isso não ajudaria.
Alexis Wilke
O Devuan vem em socorro: em vez de systemd, ele abraça o sistema SysV rc.d / init.d clássico (ou o openrc também, se alguém optar por isso).
Csaba Toth
5

Execute este comando

apt-get install 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 Espaço para desativar / ativar o particular e pronto, basta clicar em Ok e esse serviço não se preocupará em iniciar novamente na próxima inicialização. Estar usando isso por anos. Ferramenta muito útil para usuários do Debian / Ubuntu como eu.

Mark Levinsky
fonte
Fácil como 1,2,3! Obrigado por esta pequena ferramenta de linha de comando.
DanielaWaranie
2

Estou confuso o que você está tentando realizar.

Em quais níveis de execução você deseja executar?

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

Se você deseja especificar exatamente em que níveis de execução executar:

update-rc.d foo stop 0 1 6 3 . start 2 4 5 .
freiheit
fonte
2

Eu acho que isso faria o trabalho: insserv -r foo

user38551
fonte
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 níveis de execução

insserv --remove [specify_script]
cacau
fonte
0

O Bootup Manager do Ubuntu é uma espécie de sysv-rc-conf light , uma versão mais amigável da GUI, e muitas pessoas que lêem este tópico gostarão disso.

http://www.marzocca.net/linux/bum.html


fonte
0

Em um sistema baseado em red hat, você pode usar

chkconfig httpd off
chkconfig httpd --del

remover o servidor dos níveis de execução

no sistema baseado em debian, todos os serviços devem ser iniciados pelos arquivos encontrados nos diretórios /etc/rc?.d/. Esses arquivos possuem um link simbólico para os arquivos correspondentes no diretório /etc/init.d/. Se você deseja que um serviço não inicie por padrão, você pode renomeá-lo / 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 alterar o (s) link (s) e, se desejar iniciar o serviço depois, poderá usar /etc/init.d/service_name start se você deixar o início no final. 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 embora.

Roedor43
fonte
A questão está etiquetada como Debian, não Fedora ou Red Hat.
0
sudo update-rc.d SERVICE disable

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

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

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

sudo service SERVICE restart
Eddie
fonte
0

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

Kosaka Honoka
fonte