Eu li sobre como habilitar e desabilitar serviços no Ubuntu e parece que existem diferentes possibilidades para gerenciá-los.
O primeiro método que encontrei é update-rc.dadicionar novos serviços à inicialização, que tem como objetivo a /etc/init.dpasta e seu conteúdo.
O outro que encontrei é editar .confarquivos na /etc/initpasta.
Você poderia dar um exemplo passo a passo, curto e à prova de balas, sobre como adicionar um serviço no Ubuntu e habilitá-lo e desabilitá-lo?
Para redes, veja: askubuntu.com/questions/230698/…
Isso seria útil para aqueles que ficaram no Fedora 12 e chegaram aqui. Caso o linkrot chkconfigseja o que você está procurando.
— Dedos de sangramento
Observe que a resposta para o Ubuntu 14.04 ainda está faltando aqui.
@MarcelloNuccio: A partir do Ubuntu 15.04, o Upstart foi preterido em favor do Systemd.
— Dan Dascalescu 10/09/16
Os programas de inicialização automática são configurados em autostartmanifestos ou em *.servicearquivos em vários locais, assim como em init.dou crontab. Veja: unix.stackexchange.com/a/525845/43233
Existem serviços que podem ser ativados / desativados usando a GUI (como o startupaplicativo) ou o terminal.
Serviços de ativação / desativação temporários
Para parar e iniciar serviços temporariamente (não os ativa / desativa para futuras botas), você pode digitar service SERVICE_NAME. Por exemplo:
sudo service apache2 stop( PARARÁ o serviço Apache até a reinicialização ou até você iniciá-lo novamente).
sudo service apache2 start( INICIARÁ o serviço Apache assumindo que ele foi interrompido antes.).
service apache2 status (Informa o status do serviço, se ele está ativado / em execução ou desativado / NÃO está em execução.).
sudo service apache2 restart( Reiniciará o serviço. Isso é mais comumente usado quando você altera um arquivo de configuração. Nesse caso, se você alterou uma configuração do PHP ou uma configuração do Apache. A reinicialização evitará que você precise parar / iniciar com 2 linhas de comando )
service apache2(Nesse caso, como você não mencionou a AÇÃO a ser executada para o serviço, ele mostrará todas as opções disponíveis para esse serviço específico.) Esse aspecto varia dependendo do serviço, por exemplo, no MySQL, ele mencionaria apenas que está faltando um parâmetro. Para outros serviços, como o serviço de rede, ele mencionaria a pequena lista de todas as opções disponíveis.
A partir do Ubuntu 15.04, o Upstart será preterido em favor do Systemd. Com o Systemd para gerenciar os serviços, podemos fazer o seguinte:
systemctl reload SERVICE - Se o serviço suportar, ele recarregará os arquivos de configuração relacionados a ele sem interromper nenhum processo que esteja usando o serviço.
systemctl show SERVICE - Mostre todas as informações sobre o serviço.
sudo systemctl mask SERVICE- Desabilite completamente um serviço vinculando-o a /dev/null; você não pode iniciar o serviço manualmente ou habilitá-lo.
sudo systemctl unmask SERVICE- Remove o link /dev/nulle restaura a capacidade de ativar e / ou iniciar manualmente o serviço.
UPSTART (Descontinuado desde 15.04)
Se quisermos usar a maneira Upstart oficial (observe que, no momento, nem todos os serviços foram convertidos em Upstart), poderíamos usar os seguintes comandos:
status SERVICE- Isso nos dirá se um serviço convertido está sendo executado ou não. Note que esta é preterida em favor de start, stop, statuse restart. Também nos dirá se um serviço ainda não foi convertido em inicial:
Um serviço convertido normalmente gera o status atual (Iniciando, Executando, Parando ...) e o ID do processo. Um serviço não convertido causaria um erro sobre um trabalho desconhecido .
Alguns atalhos podem funcionar apenas com o servicecomando acima, mas não com os comandos abaixo, a menos que sejam 100% convertidos em serviços iniciantes:
PARAR -sudo stop mysql
REINICIAR -sudo restart mysql
ESTADO -sudo status smbd
Para alternar entre um serviço e iniciar ou parar permanentemente, você precisa:
onde a estrofe manualimpedirá o Upstart de carregar automaticamente o serviço na próxima inicialização. Qualquer serviço com o .overridefinal terá precedência sobre o arquivo de serviço original. Você só poderá iniciar o serviço manualmente posteriormente. Se você não quiser isso, basta excluir o arquivo .override. Por exemplo:
Colocará o serviço MySQL em manualmodo. Se você não quer isso, depois pode simplesmente fazer
e Reinicialize para que o serviço inicie automaticamente novamente. Obviamente, para habilitar um serviço, a maneira mais comum é instalá-lo. Se você instalar o Apache, Nginx, MySQL ou outros, eles serão iniciados automaticamente após o término da instalação e serão iniciados sempre que o computador inicializar. Desabilitar, como mencionado acima, fará uso do serviço manual.
Você precisa adicionar .servicea todos os comandos? systemctl mongod statusfuncionou muito bem.
@ DanDascalescu não, você não, mas deixe-me esclarecer isso lá.
— 22616 Luis Alvarado
O arquivo .override deve ser colocado em /etc/init.d/, ou seja, onde o serviço é colocado?
Por que o Upstart foi descontinuado no 15.04? qual é a maneira correta de executar scripts ao iniciar / reiniciar no ubuntu 16.04 ou posterior?
Obrigado por esta resposta abrangente. O systemdconjunto de comandos funciona bem no Ubuntu 18.04.
Atualmente, existem três maneiras diferentes de o software ser iniciado como um serviço no Ubuntu, SysV , Upstart e systemd . Um serviço é definido aqui como um programa executado pelo sistema em segundo plano, em oposição a um iniciado e executado diretamente pelo usuário.
A maneira tradicional de iniciar serviços no Linux era inserir um script /etc/init.de, em seguida, usar o update-rc.dcomando (ou nas distros baseadas no RedHat chkconfig) para habilitá-lo ou desabilitá-lo.
Este comando usa alguma lógica levemente complicada para criar links simbólicos /etc/rc#.d, que controlam a ordem dos serviços iniciados. Se você executar, ls /etc/rc2.dpoderá ver a ordem em que os serviços serão eliminados com um nome de arquivo como K##xxxxe iniciado com nomes de arquivos S##xxxx. O ##in S##xxxxsignifica uma "ordem inicial" para o serviço xxxx. Por outro lado, o ##in K##xxxxsignifica a ordem de interrupção do serviço xxxx.
Um grande problema com o SysV era que, durante a inicialização do sistema, tudo tinha que ser feito em série, uma coisa após a outra, tornando os tempos de inicialização do sistema muito lentos . Foram feitas tentativas para paralelizar isso, mas eram aleatórias e difíceis de tirar o máximo proveito. Esse foi o principal motivo pelo qual o Upstart foi criado.
O Upstart usa arquivos de definição de tarefa /etc/initpara definir em quais eventos um serviço deve ser iniciado. Portanto, enquanto o sistema está inicializando, o iniciante processa vários eventos e pode iniciar vários serviços em paralelo. Isso permite que eles utilizem totalmente os recursos do sistema, por exemplo, iniciando um serviço vinculado ao disco enquanto outro serviço vinculado à CPU é executado ou enquanto a rede aguarda a atribuição de um endereço IP dinâmico.
Você pode ver todos os arquivos de tarefas iniciantes executando ls /etc/init/*.conf
Deixe-me parar por aqui e dizer que, se você não souber o que é um serviço, ou o que ele faz, NÃO o desative!
Nem todos os serviços foram convertidos para iniciantes. Enquanto trabalhava na equipe de servidores da Canonical nos últimos meses, trabalhei em vários arquivos de tarefas convertidos, e a parte mais interessante é que ela permite livrar-se de todo o script "mágico" e apenas colocar um alguns comandos aqui e ali para definir exatamente como iniciar o serviço e nada mais. Mas, por enquanto, apenas alguns serviços de rede tradicionais, como squid e samba , foram convertidos.
Um serviço é baseado no inicio?
Para descobrir se um serviço é baseado no início, você pode executar o comando status:
Se for um trabalho inicial , ele mostrará o seguinte:
Nesse caso, apache2não foi convertido para inicial . Então, para desativar, apache2basta executar
Desativar serviços (trabalhos) no iniciante
As definições de trabalho inicial não têm um update-rc.dcomando. Para desativar o trabalho, você precisa editar o arquivo do trabalho diretamente para desativá-lo. Existem duas maneiras de fazer isso.
Se você ainda deseja iniciá-lo manualmente, precisará comentar a start oncondição. Digamos que você queira instalar o samba , mas não o inicie automaticamente. Aqui está o arquivo do trabalho (em natty):
Para desativar o samba , basta colocar um #na frente do " start on local-filesystems". Observe que, embora não seja iniciado o backup na inicialização, você ainda precisa interrompê-lo desta vez com
Se, no entanto, você nunca quiser que o samba inicie, sugiro remover o pacote. Se, no entanto, você deseja que ele esteja instalado, mas não inicializável, você também pode:
Desabilitar um serviço usando a estrofe de inicialização / parada (a partir de 11.04)
Começando com a versão do upstart que estará em 11,04, há uma nova palavra-chave que desativa o start one stop onestrofes: manual. Portanto, outra maneira de desativar o serviço a partir do 11.04 é:
Você pode criar um overridearquivo para desativar um serviço sem editar a definição da tarefa, apenas colocando a manualpalavra-chave.
Parece que o 11.04 também substituiu. Portanto, echo manual >> /etc/init/<service>.overrideé preferível, pois deixa intacto o arquivo .conf original. De qualquer forma, ainda é uma pena que uma ativação / desativação tão básica tenha levado 3 anos para se desenvolver, e não há GUI para isso.
— MestreLion 27/05
update-rc.d é o que realmente importa
parece muito mais manipular o tópico original do que a resposta que foi marcada como resposta definitiva pelo pôster da pergunta original. Obrigado! :)
No meu caso, o arquivo /etc/init/ssh.confexiste, mas status sshe status sshdambos dizem "trabalho Desconhecido". Esta resposta não parece abordar essa possibilidade?
status sshdá-me 'trabalho desconhecido', também, mas service ssh statusfunciona para mim
Você pode navegar pelas páginas usando Ctrl+na página seguinte e Ctrl+pa página anterior. Você pode ativar e desativar serviços selecionando os SPACEníveis de execução desejados.
Outra alternativa seria Jobs-Admin instalando através do
Para mostrar mais trabalhos, você deve marcar a opção Mostrar trabalhos protegidos no menu.
E a terceira opção seria chkconfig ,
Pode ser usado via CLI chkconfig, mostrando a lista de trabalhos On / Off. Também podemos visualizar os serviços do sistema usandochkconfig –list
E podemos até adicionar nosso próprio serviço, usando um script init adequado com títulos adequados.
E outra opção pode ser consultada aqui update-rc.d , explicada brevemente aqui .
Observe que, para o Ubuntu Server 12.04, update-rc.d é usado em vez do chkconfig.
no servidor ubuntu:Package chkconfig is not available, but is referred to by another package.
@pwned Você pode editar e publicar as informações atualizadas sobre a edição do servidor. Obrigado.
Fiz como você sugeriu, agora cabe a revisão por pares.
empregos de administrador não permite mudar de emprego (Ubuntu 14.04), produzindo um relatório acidente vez ;-)
O sysv-rc-conf não é adequado para uso com o iniciante ou o systemd, sendo apenas o antigo sistema System 5 rc, que não é o padrão no Ubuntu Linux há quase uma década. O bug Debian # 791689 reconhece isso e questiona por que não foi marcado como conflitante com o systemd.
Para aqueles que executam o Ubuntu no ssh, acho que a melhor opção é rcconf- um programa baseado em texto:
Navegue com as teclas tab e seta, pressione a barra de espaço para ativar / desativar. As alterações são persistentes nas reinicializações.
Captura de tela emprestada deste post do blog , que também mostra sysv-rc-conf- uma ferramenta semelhante que também permite definir o nível de execução. (Para aqueles que se importam o suficiente com os níveis de execução para alterá-los :)
Infelizmente, rcconf não funciona com iniciantes (serviços listados na /etc/init/*), apenas com o mecanismo tradicional ( ls -l /etc/init.d/*- aqueles que não são links simbólicos).
Felizmente, muitos dos serviços que são relevantes ao fazer o ssh em um servidor (Apache, Tomcat, mdadm, boinc-client ...) ainda não foram movidos para o início.
Isso ainda funciona com o iniciante?
Infelizmente não. Mas funcionou para todos os casos que eu queria mudar - os trabalhos iniciantes parecem ser principalmente coisas que eu nunca quero desativar - relógio de hardware, daemon de log, rede etc. (no servidor Ubuntu, pelo menos). Mas é algo para estar ciente (eu não estava :), atualizei a postagem.
Infelizmente o mysql foi convertido para iniciante. E isso é um serviço que eu só uso quando estou fazendo algum projeto.
Há um erro no rcconf no Ubuntu 12.04 que impede que o programa seja iniciado. Para resolver o problema, você precisa instalar o pacote de diálogo.
Como essa resposta foi escrita, update-rc.dfoi alterada e algumas de suas funcionalidades descontinuadas foram removidas . O bug da Debian # 727735 observa que o rcconf não foi alterado para corresponder. E não, o rcconf também não funciona com o systemd, não sendo aplicável a nenhum dos sistemas init padrão do Ubuntu Linux na última década.
Descobri que existe essa ferramenta GUI, algo como BUM, mas compatível com o Upstart:
Mas é muito simples, e não permitem mudar "trabalhos protegidos" (o que é que Jobbs Apple tem Jobs, sistema operacional tem daemons?!)
Eu nem sequer permitem mudar "empregos desprotegidos" (Ubuntu 14.04), produzindo um relatório acidente vez ;-)
Editar o arquivo de configuração inicial existente (como descrito acima) não é uma boa idéia. Um pacote atualizado pode fornecer uma configuração atualizada e você precisa repetir suas alterações várias vezes.
Ao dar uma olhada man 5 init, encontrará uma solução mais apropriada: usando uma configuração de substituição. Exemplo curto: digamos que temos um serviço chamado "foobar"; portanto, haveria um arquivo chamado /etc/init/foobar.confcom sua configuração inicial. Agora você não deseja remover esse arquivo nem modificá-lo - mas também não deseja que este serviço seja executado? Então coloque uma substituição de arquivo ao lado dele: /etc/init/foobar.override, contendo (opcionalmente o cabeçalho com a descrição e) em vez dos start on/ stop onlinhas que você colocar uma linha com uma palavra: manual. Dessa forma, você instrui o iniciante a usar basicamente o foobar.conf, mas substitui a definição de inicialização para iniciar apenas esse serviço quando aplicado manualmente (via service foobar startem nosso exemplo).
Há também o gerenciador de inicialização .
Não se esqueça de verificar o botão "Avançado".
Eu uso o Stacer. Também mostra serviços e processos. Uma caixa de ferramentas completa do sistema GUI. https://github.com/oguzhaninan/Stacer