Pare o programa em execução na inicialização do Linux

29

Como faço para parar um programa em execução na inicialização do Linux. Quero remover alguns aplicativos da inicialização para permitir que eles sejam gerenciados, por supervisordexemplo, apache2

Frozenskys
fonte
É exatamente por isso que eu não o marquei ... Estou procurando todas as variações enquanto trabalho com algumas distribuições diferentes.
Frozenskys

Respostas:

29

Dependendo da sua distribuição, use a ferramenta chkconfig ou update-rc.d para ativar / desativar os serviços do sistema.

Em um sistema de estilo redhat / suse / mandrake:

sudo chkconfig apache2 off 

No Debian:

sudo update-rc.d -f apache2 remove

Confira suas páginas de manual para mais informações.

jacksonh
fonte
Por que você precisa de -f (presumo que seja força) nas distribuições baseadas no Debian?
Frozenskys
2
Existem dois conjuntos de arquivos em jogo aqui. Você tem o script init real em /etc/init.d/ e os links para ele no diretório runlevel /etc/rcrunlevel.d/. Esses caras apontam para o script em /etc/init.d/ Se você não usar -f update-rd.d falhará, A menos que o script em /etc/init.d/ já esteja excluído. Se você usar -f update-rc.d, os arquivos de link serão excluídos corretamente, independentemente de o script /etc/init.d/ ou não ser excluído.
jacksonh
Ah, isso faz muito sentido, eu tinha esquecido que os scripts de nível de execução eram apenas links para os scripts de inicialização. Obrigado pela explicação extra.
Frozenskys 10/08
6

Se você está lidando com um sistema Ubuntu moderno e algumas outras distribuições, pode ser necessário lidar com uma combinação de scripts init tradicionais e scripts iniciais. O gerenciamento de scripts init é coberto por outras respostas. A seguir, é uma maneira de impedir que um serviço inicial inicie na inicialização:

# mv /etc/init/servicename.conf /etc/init/servicename.conf.disabled

O problema com esse método é que ele não permite que você inicie o serviço usando:

# service start servicename

Uma alternativa para isso é abrir o servicename.confarquivo no seu editor favorito e comentar as linhas que começam com:

start on

Ou seja, altere isso para

#start on ...

onde o "..." é o que estava depois de "iniciar" anteriormente. Dessa forma, quando você deseja reativá-lo, não precisa se lembrar de quais eram os parâmetros "iniciar".

Por fim, se você possui uma nova versão do upstart, basta adicionar a palavra "manual" ao final do arquivo de configuração. Você pode fazer isso diretamente do shell:

# echo "manual" >> /etc/init/servicename.conf

Isso fará com que o iniciante ignore qualquer frase "iniciar" anteriormente no arquivo.

Steven D
fonte
2

Nos sistemas recentes Fedora e Future RHEL

systemctl disable httpd.service

desabilitará o serviço httpd

Alastair
fonte
Obrigado! Eu tinha tentado muitos métodos, mas esse systmctlcomando funcionou bem.
loved.by.Jesus
1

Para listar todos os serviços de inicialização

    systemctl

Para interromper a execução de um serviço na inicialização

    sudo systemctl disable servicename

Por exemplo, se precisarmos parar de executar o servidor ssh na inicialização

    sudo systemctl disable sshd.service

Podemos ativar isso novamente usando

    sudo systemctl enable sshd.service

Quase todas as distribuições linux usam systemd para inicializar serviços de inicialização. Portanto, os comandos acima funcionam para a maioria das distribuições.

Principe
fonte
Bem-vindo à U&L e obrigado por sua contribuição! Gostaria de salientar que esta pergunta tem cerca de oito anos agora, portanto a resposta aceita estava correta para a época. O uso do systemctl pode estar correto agora , mas está correto para uma pergunta diferente .
Jeff Schaller
@ Prince, obrigado pelas explicações detalhadas. Isso me ajudou a entender como a inicialização do boot funciona no meu Xubuntu.
loved.by.Jesus
0

O Slackware e o Arch linux têm métodos semelhantes de parar / iniciar processos na inicialização, diferentes dos exemplos de estilo Ubuntu e Redhat fornecidos acima.

Nos linuxes do Slackware e do Arch, existem scripts sh no diretório /etc/rc.d, geralmente um script por daemon ou um script por subsistema.

Por exemplo, o Slackware inicia o servidor da web Apache com um script /etc/rc.d/rc.httpd, chamado no momento apropriado durante a inicialização do sistema com o argumento "start". O Arch Linux possui scripts com nomes diferentes, mas o mesmo tipo de coisa acontece.

Para impedir que algum processo seja iniciado durante a inicialização do sistema, no Slackware, você apenas torna o script apropriado em /etc/rc.d não executável. Para impedir que o Apache inicie na próxima inicialização:

chmod -x /etc/rc.d/rc.httpd

Para parar um Apache iniciado na inicialização: /etc/rc.d/rc.httpd stop Você precisará ser root.

Arch é um pouco mais complexo. O arquivo /etc/rc.conf, um script de shell, possui uma matriz DAEMONS. Para impedir que o Apache inicie na inicialização, você deve alterar esta linha no /etc/rc.conf:

DAEMONS=(hal syslog-ng network netfs crond alsa sshd httpd ntpd postgresql)

Para esta linha:

DAEMONS=(hal syslog-ng network netfs crond alsa sshd ntpd postgresql)

Para parar um apache já em execução, você deve executar /etc/rc.d/httpd stopcomo root.

Bruce Ediger
fonte
0

No Ubuntu 10.04, você pode controlar alguns programas de inicialização a partir da GUI.

SystemPreferencesStartup Applications

Preferências de aplicativos de inicialização

jjclarkson
fonte
1
A imagem original não está mais lá.
22411 tshepang
-1

1) toque em super-chave no teclado 2) pesquise 'Aplicativos de Inicialização' 3) escolha o programa que deseja desativar 4) clique como esta resposta no worx.

Bhasha Bhavanishankar
fonte