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.d
adicionar novos serviços à inicialização, que tem como objetivo a /etc/init.d
pasta e seu conteúdo.
O outro que encontrei é editar .conf
arquivos na /etc/init
pasta.
Qual é a maneira recomendada de ativar / desativar / adicionar serviços e por quê?
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?
chkconfig
seja o que você está procurando.autostart
manifestos ou em*.service
arquivos em vários locais, assim como eminit.d
oucrontab
. Veja: unix.stackexchange.com/a/525845/43233Respostas:
Existem serviços que podem ser ativados / desativados usando a GUI (como o
startup
aplicativo) ou o terminal.Para o terminal, você tem várias opções. Primeiro, abra um terminal (digite "terminal" no painel, por exemplo, e abra-o). Então:
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.SYSTEMD
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 start SERVICE
- Use-o para iniciar um serviço. Não persiste após a reinicializaçãosystemctl stop SERVICE
- Use-o para interromper um serviço. Não persiste após a reinicializaçãosystemctl restart SERVICE
- Use-o para reiniciar um serviçosystemctl 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 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.systemctl is-enabled SERVICE
- Verifique se um serviço está atualmente configurado para iniciar ou não na próxima reinicialização.systemctl is-active SERVICE
- Verifique se um serviço está ativo no momento.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/null
e 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 destart
,stop
,status
erestart
. 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
service
comando acima, mas não com os comandos abaixo, a menos que sejam 100% convertidos em serviços iniciantes:START -
sudo start mysql
PARAR -
sudo stop mysql
REINICIAR -
sudo restart mysql
ESTADO -
sudo status smbd
Ativando / Desativando um Serviço
Para alternar entre um serviço e iniciar ou parar permanentemente, você precisa:
onde a estrofe
manual
impedirá o Upstart de carregar automaticamente o serviço na próxima inicialização. Qualquer serviço com o.override
final 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
manual
modo. Se você não quer isso, depois pode simplesmente fazere 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
.fonte
.service
a todos os comandos?systemctl mongod status
funcionou muito bem.systemd
conjunto 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.
SysV
A maneira tradicional de iniciar serviços no Linux era inserir um script
/etc/init.d
e, em seguida, usar oupdate-rc.d
comando (ou nas distros baseadas no RedHatchkconfig
) 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.d
poderá ver a ordem em que os serviços serão eliminados com um nome de arquivo comoK##xxxx
e iniciado com nomes de arquivosS##xxxx
. O##
inS##xxxx
significa uma "ordem inicial" para o serviçoxxxx
. Por outro lado, o##
inK##xxxx
significa a ordem de interrupção do serviçoxxxx
.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.
Subir na vida
O Upstart usa arquivos de definição de tarefa
/etc/init
para 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:
Mas se não for, você verá algo mais parecido com isto:
Nesse caso,
apache2
não foi convertido para inicial . Então, para desativar,apache2
basta executarDesativar serviços (trabalhos) no iniciante
As definições de trabalho inicial não têm um
update-rc.d
comando. 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 on
condiçã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 comSe, 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 on
estop on
estrofes:manual
. Portanto, outra maneira de desativar o serviço a partir do 11.04 é:Você pode criar um
override
arquivo para desativar um serviço sem editar a definição da tarefa, apenas colocando amanual
palavra-chave.fonte
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./etc/init/ssh.conf
existe, masstatus ssh
estatus sshd
ambos dizem "trabalho Desconhecido". Esta resposta não parece abordar essa possibilidade?status ssh
dá-me 'trabalho desconhecido', também, masservice ssh status
funciona para mimsysv-rc-conf
Tente usar sysv-rc-conf
e para começar a gerenciar os serviços, execute
O que trará uma janela interativa como esta
Você pode navegar pelas páginas usando
Ctrl+n
a página seguinte eCtrl+p
a página anterior. Você pode ativar e desativar serviços selecionando osSPACE
níveis de execução desejados.Jobs-Admin
Outra alternativa seria Jobs-Admin instalando através do
Que também fornece GUI como este
Para mostrar mais trabalhos, você deve marcar a opção Mostrar trabalhos protegidos no menu.
chkconfig
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
Os serviços podem ser ativados usando
Os serviços podem ser desativados usando
E podemos até adicionar nosso próprio serviço, usando um script init adequado com títulos adequados.
update-rc.d
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.fonte
Package chkconfig is not available, but is referred to by another package.
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.
fonte
update-rc.d
foi 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:
Jobs-Admin
fonte
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.conf
com 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 dosstart on
/stop on
linhas que você colocar uma linha com uma palavra:manual
. Dessa forma, você instrui o iniciante a usar basicamente ofoobar.conf
, mas substitui a definição de inicialização para iniciar apenas esse serviço quando aplicado manualmente (viaservice foobar start
em nosso exemplo).fonte
Há também o gerenciador de inicialização .
Para instalar:
sudo apt-get install bum
Mais informações: http://www.marzocca.net/linux/bum.html
fonte
Eu uso o Stacer. Também mostra serviços e processos. Uma caixa de ferramentas completa do sistema GUI. https://github.com/oguzhaninan/Stacer
fonte