Como impedir que os serviços Linux sejam iniciados automaticamente?

11

Migrei recentemente do Windows para o Linux (xubuntu)

Sou desenvolvedor e instalei tudo o que preciso, LAMP. No Windows, eu costumava desativar todos os serviços desnecessários - não preciso do serviço Apache ou MySQL em execução o tempo todo. Sempre que eu precisava do MySQL eu costumava usar:

net start mysql

Como faço o mesmo no Linux?

  1. Desativando daemons não necessários da inicialização automática?
  2. Iniciando-os somente quando eu precisar deles?
Aviv
fonte
3
Eu acho que você deve incluir a versão exata do ubuntu que você está usando. Novas versões do ubuntu usam upstart, que tem suas próprias dicas.
vtest 27/10/10
Edit: Estou usando a versão mais recente do Xubuntu 10.04, mas a id não deseja usar e a GUI para isso, apenas no terminal. Parece que @prhq recebeu algo em sua resposta. O que é novo?
Aviv
Pertence a outro lugar, seja na falha do servidor ou no Unix. Ainda é útil.
ripper234

Respostas:

10

Na maioria das distribuições linux, você pode iniciar / parar serviços manualmente (como root ou usando o sudo) executando os seguintes comandos:

# /etc/init.d/apache2 start
# /etc/init.d/mysqld start

# /etc/init.d/apache2 stop
# /etc/init.d/mysqld stop

Quais serviços que são iniciados automaticamente são controlados por links de arquivos em /etc/rc[runlevel}.d/. Encontre seu nível de execução atual usando o comando "runlevel" como root

# runlevel
N 2

O que aqui indica o nível de execução 2 Agora você só precisa remover os arquivos em /etc/rc2.d/ que não deseja que sejam iniciados.

Remover o apache e o Mysql em uma área de trabalho geralmente é bom, mas esteja ciente de remover outros serviços.

hultqvist
fonte
3
Isso é bastante enganador, mesmo que você tenha dito "a maioria das distribuições". Eu qualificaria sua receita como específica da distribuição.
vtest 27/10/10
O que você tinha em mente? Só consigo pensar no ArchLinux (mas esses usuários já devem saber o que estão fazendo). É claro que algumas distros têm ferramentas específicas, mas a técnica acima também funciona com elas.
Hultqvist
Muito estranho, posso ver um arquivo chamado S91apache2 no diretório /etc/rc2.d, acho que ele inicia o apache2 ... mas não consigo encontrar nenhum arquivo referente ao MySQL. Onde posso aprender sobre esses daemons de inicialização automática?
Aviv
Então o servidor mysql pode não estar configurado para inicialização automática. Este site parece ter uma boa explicação: yolinux.com/TUTORIALS/LinuxTutorialInitProcess.html
hultqvist
Note-se que, sob * BSD ea árvore Slackware, o diretório é /etc/rc.d/.
283126
13

Para versões do Ubuntu que usam systemd (15.04 e posterior), use:

systemctl disable service

Isso fará o trabalho. Ele desativará o serviço e não será reiniciado após uma reinicialização. Para ativar temporariamente, basta iniciar o serviço. Não habilitado .

Para encontrar o nome do serviço, use

service --status-all

Outros comandos são:

systemctl start service- Use-o para iniciar um serviço. Não persiste após a reinicialização

systemctl stop service- Use-o para interromper um serviço. Não persiste após a reinicialização

systemctl restart service - Use-o para reiniciar um serviço

systemctl status service- Mostra o status de um serviço. Informa se um serviço está em execução no momento.

systemctl enable service- Liga o serviço, na próxima reinicialização ou no próximo evento de inicialização. Persiste após a reinicialização.

systemctl disable service- Desativa o serviço na próxima reinicialização ou no próximo evento de parada. Persiste após a reinicialização.

Nandesh
fonte
2
É uma pena que não seja a resposta aceita :). Obrigado, eu esqueci totalmente esse comando.
Nordes
8

O Ubuntu 10.04 está no meio de uma transição entre dois sistemas de gerenciamento de serviços: SysVinit (o sistema tradicional, usado pela maioria das distribuições Linux) e Upstart (um sistema mais recente promovido pelo Ubuntu e disponível em mais e mais distribuições).

Os scripts de gerenciamento de serviços SysVinit estão disponíveis /etc/init.d. Você pode iniciar /etc/init.d/SERVICENAME starte parar o serviço com /etc/init.d/SERVICENAME stop. Se o serviço é iniciado automaticamente na inicialização depende da presença de links simbólicos de /etc/rc?.donde ?está um dígito de 2para 5(o nível de execução ). A maneira mais fácil de impedir que um serviço seja iniciado automaticamente na inicialização é usar update-rc.d SERVICENAME disable.

Os arquivos de configuração de gerenciamento de serviços iniciados estão em /etc/init. Você pode iniciar start SERVICENAMEe parar o serviço com stop SERVICENAME. O arquivo de configuração /etc/init/SERVICENAME.confcontém uma linha que indica quando iniciar o serviço: start on …. Uma maneira fácil de desativar esses serviços é mudar essa linha para start on never and (…). Se você não deseja editar o arquivo, também pode desativar completamente o serviço sem confundir o sistema de empacotamento, renomeando-o para não terminar .conf.

dpkg-divert --add --local --divert /etc/init/foo.conf.disabled --rename /etc/init/foo.conf

A partir do Ubuntu 10.04, o Apache vem com um script SysVinit e o Mysql vem com um script Upstart.

Gilles 'SO- parar de ser mau'
fonte
A edição do servicename.conf é realmente a maneira preferida? Especialmente quando as atualizações podem teoricamente atualizar os arquivos de configuração e substituir as alterações
Masse
@Masse: Nem sempre é o caminho preferido, mas tem a vantagem de sempre trabalhar. Alguns serviços leem um arquivo /etc/defaulte têm uma START_FOOopção que você pode desativar, mas muitos esperam executar se estiverem instalados. As atualizações não substituirão suas alterações sem avisar, pois todos esses arquivos são conffiles.
Gilles 'SO- stop be evil'
Uau. Este parece ser um grande passo para trás.
Masse
@Masse: Os arquivos de configuração devem ser editados pelo administrador. Mas se você não quiser fazer isso, também poderá dpkg-divertrenomear o arquivo de serviço. No entanto, se você fizer isso, não poderá iniciar o serviço explicitamente.
Gilles 'SO- stop be evil'