Como ativar ou desativar serviços?

Eu li sobre como habilitar e desabilitar serviços no Ubuntu e parece que existem diferentes possibilidades de gerenciá-los.

O primeiro método que encontrei é update-rc.d para adicionar novos serviços à inicialização, que visa /etc/init.d pasta e seu conteúdo.

O outro que encontrei é Editar .conf arquivos no /etc/init pasta.

Qual é a maneira recomendada de ativar / desativar / adicionar serviços e por quê?

Você poderia dar um pequeno exemplo passo a passo à prova de balas sobre como adicionar um serviço no Ubuntu e ativá-lo e desativá-lo?

Existem serviços que podem ser ativados / desativados usando a GUI (como o startup aplicação) ou o terminal.

Para o Terminal, você tem várias opções. Primeiro, abra um terminal (digite "terminal" No Traço, por exemplo, e abra-o). Entao:

Serviços temporários de ativação / desativação

Para parar e iniciar serviços temporariamente (Não habilita / desabilita-os para futuras Botas), você pode digitar service SERVICE_NAME [action]. Por exemplo:

  • sudo service apache2 stop: Poder PARAR o serviço Apache até reiniciar ou até iniciá-lo novamente.
  • sudo service apache2 start: Poder Comece o serviço Apache assumindo que foi interrompido antes.
  • service apache2 status: Irá dizer-lhe o STATUS do serviço, se ele estiver ativado / em execução de desativado / não em execução.
  • sudo service apache2 restart: Poder REINICIAR servico. Isso é mais comumente usado quando você mudou, um arquivo de configuração. Nesse caso, se você alterou uma configuração PHP ou uma configuração Apache. Reiniciar irá salvá-lo de ter que 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, com o MySQL, ele mencionaria apenas que está faltando um parâmetro. Para outros serviços, como serviço de rede, mencionaria a pequena lista de todas as opções disponíveis.

Systemd

A partir do Ubuntu 15.04, o Upstart será descontinuado em favor do Systemd. Com o Systemd para gerenciar os Serviços, podemos fazer o seguinte (através do systemctl action SERVICE padrao):

  • sudo systemctl start SERVICE: Use-o para iniciar um serviço. Não persiste após a reinicialização
  • sudo systemctl stop SERVICE: Use-o para parar um serviço. Não persiste após a reinicialização
  • sudo systemctl restart SERVICE: Use-o para reiniciar um serviço
  • sudo systemctl reload SERVICE: Se o serviço suportar, ele recarregará os arquivos de configuração relacionados a ele sem interromper qualquer 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.
  • sudo systemctl enable SERVICE: Ativa o serviço, na próxima reinicialização ou no próximo evento iniciar. Persiste após a reinicialização.
  • sudo systemctl disable SERVICE: Desliga 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á 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: Mostrar todas as informações sobre o serviço.
  • sudo systemctl mask SERVICE: Desative completamente um serviço vinculando-o a /dev/null; você não pode iniciar o serviço manualmente ou ativar o serviço.
  • sudo systemctl unmask SERVICE: Remove o link para /dev/null e restaura a capacidade de ativar e / ou iniciar manualmente o serviço.

Upstart (Obsoleto Desde 15.04)

Se quisermos usar a maneira inicial oficial (observe que, no momento, nem todos os serviços foram convertidos para iniciantes), poderíamos usar os seguintes comandos:

status SERVICE - Isso nos dirá se um serviço convertido está em execução ou não. Observe que isso está obsoleto em favor de start, stop, status &lificador; restart. Ele também nos dirá se um serviço ainda não foi convertido para upstart:

Um serviço convertido normalmente produziria o status atual (iniciando, executando, parando...) e ID do processo. Um serviço não convertido daria um erro sobre um trabalho desconhecido.

Alguns atalhos só podem funcionar com o service comando acima, mas não com os comandos abaixo, a menos que sejam 100% convertidos em serviços iniciais:

  • sudo start mysql: Iniciar
  • sudo stop mysql: Parar
  • sudo restart mysql: Reiniciar
  • sudo status smbd: Status

Ativar / desativar um serviço

Para alternar um serviço de iniciar ou parar permanentemente, você precisaria:

echo manual | sudo tee /etc/init/SERVICE.override

onde a estrofe manual irá parar Upstart de carregar automaticamente o serviço na próxima inicialização. Qualquer serviço com o .override o final terá precedência sobre o arquivo de serviço original. Você só poderá iniciar o serviço manualmente depois. Se você não quiser isso, basta excluir o .override.Por exemplo:

echo manual | sudo tee /etc/init/mysql.override

Colocará o serviço MySQL em manual modo. Se você não quer isso, depois você pode simplesmente fazer

sudo rm /etc/init/mysql.override

e reinicie para que o serviço seja iniciado automaticamente novamente. Obviamente, para habilitar um serviço, a maneira mais comum é instalá-lo. Se você instalar Apache, Nginx, MySQL ou outros, eles iniciam automaticamente ao concluir a instalação e serão iniciados toda vez que o computador inicializar. Desativar, como mencionado acima, fará uso do serviço manual.

Atualmente, existem três maneiras diferentes de o software ser iniciado como um serviço no Ubuntu, SysV, Arrivista 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 colocar um script em /etc/init.d, e então use o update-rc.d comando (ou em distros baseadas em RedHat, chkconfig) para ativá-lo ou desativá-lo.

Este comando usa alguma lógica levemente complicada para criar links simbólicos em /etc/rc#.d, que controlam a ordem de início dos serviços. Se você correr ls /etc/rc2.d você pode ver a ordem em que os Serviços serão mortos com um nome de arquivo como K##xxxx e começou com nomes de arquivos S##xxxx. O ## em S##xxxx significa uma "ordem de início" para o serviço xxxx. Por outro lado, o ## em K##xxxx significa a ordem de morte para o serviço xxxx.

Um grande problema com SysV foi isso ao inicializar o 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. Tentativas foram feitas para paralelizar isso, mas eram aleatórias e difíceis de aproveitar ao máximo. Esta foi a principal razão pela qual Arrivista foi criado.

Arrivista

Upstart usa arquivos de definição de trabalho em /etc/init para definir quais eventos um serviço deve ser iniciado. Assim, enquanto o sistema está inicializando, o upstart processa vários eventos e, em seguida, 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 trabalho iniciais executando ls /etc/init/*.conf

Deixe-me apenas parar aqui e dizer que se você não sabe o que é um serviço, ou o que ele faz, não desativá-lo!

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 trabalho convertidos, e a parte mais agradável é que ele permite que você se livre de todo o script "magic" e apenas coloque alguns comandos aqui e ali para definir exatamente como iniciar o serviço, e nada mais. Mas, por enquanto, apenas um punhado de serviços de rede tradicionais, como Lula e samba, foram convertidos.

É um serviço baseado em upstart?

Para descobrir se um serviço é baseado em upstart, você pode executar o comando status:

status servicename

Se é um arrivista trabalho, ele vai mostrar isso:

$ status statdstatd start/running, process 942

Mas se não for, você verá algo mais assim:

$ status apache2status: Unknown job: apache2

Neste caso, apache2 não foi convertido em arrivista. Então, para desativar apache2 você acabou de correr

sudo update-rc.d apache2 disablesudo service apache2 stop

Desativar serviços (jobs) no upstart

As definições de trabalho iniciais não têm um update-rc.d comando. Para desativar o trabalho, você precisa editar o arquivo de trabalho diretamente para desativá-lo. Existem duas maneiras de fazer isso.

Se você quiser ainda ser capaz de iniciá-lo manualmente, então você precisa comentar o start on condicao. Digamos que você deseja instalar samba, mas não tê-lo iniciar automaticamente. Aqui está o arquivo de trabalho (em natty):

description "SMB/CIFS File Server"author      "Steve Langasek <steve.langasek@ubuntu.com>"start on local-filesystemsstop on runlevel [!2345]respawnpre-start script    RUN_MODE="daemons"    [ -r /etc/default/samba ] && . /etc/default/samba    [ "$RUN_MODE" = inetd ] && { stop; exit 0; }    install -o root -g root -m 755 -d /var/run/sambaend scriptexec smbd -F

Desactivar samba, você pode apenas colocar um # na frente do "start on local-filesystems". Observe que, embora não inicie o backup na inicialização, você ainda precisa pará-lo desta vez com

sudo service smbd stop

Se, no entanto, você nunca quiser samba para começar, eu sugiro realmente remover o pacote. Se, no entanto, você quiser que ele seja instalado, mas não iniciável, você também pode fazer:

mv /etc/init/smbd.conf /etc/init/smbd.conf.disabled

Desative um serviço usando a estrofe iniciar / parar (a partir de 11.04)

Começando com a versão do upstart que será em 11.04, há uma nova palavra-chave que desativa o start on e stop on estrofe: manual. Portanto, outra maneira de desativar o serviço a partir de 11.04 é fazer:

echo 'manual' | sudo tee /etc/init/mysql.override# command from root shellecho manual >> /etc/init/mysql.override

Você pode criar um override arquivo para desativar um serviço sem editar a definição do trabalho, apenas colocando o manual palavra-chave nele.

sysv-rc-conf

Tente usar sysv-rc-conf

sudo apt-get install sysv-rc-conf

e para começar a gerenciar os Serviços, execute

sudo sysv-rc-conf

O que abrirá uma janela interativa como esta

Você pode navegar ainda mais pelas páginas usando Ctrl+n para a próxima página e Ctrl+p para a página anterior. Você pode ativar e desativar os serviços selecionando SPACE em níveis de execução desejados.

Empregos-Admin

Outra alternativa seria Empregos-Admin Instalando através

sudo apt-get install jobs-admin

Que também fornece GUI como este

Para mostrar mais empregos, você tem que marcar o Mostrar Trabalhos Protegidos do seu menu.

chkconfig

E a terceira opção seria chkconfig,

sudo apt-get install chkconfig

Pode ser usado via CLI chkconfig, mostrando lista de empregos On/Off.Também podemos ver os serviços do sistema usando chkconfig –list

Os serviços podem ser ativados usando

chkconfig <service> on

Os serviços podem ser desativados usando

chkconfig <service> off

E podemos até adicionar nosso próprio serviço, usando um script de inicialização adequado com títulos adequados.

chkconfig --add <service>

atualização-rc.d

E outra opção pode ser referida aqui atualização-rc.d , explicado brevemente aqui.

Observe que para o Ubuntu Server 12.04, update-rc.d é usado em vez de chkconfig.

Para aqueles de nós que executam o Ubuntu por ssh, acho que a opção mais agradável é rcconf - um programa baseado em texto:

sudo apt-get install rcconfsudo rcconf

Navegue com as teclas de guia e seta, pressione a barra de espaço para ativar / desativar. As alterações são persistentes nas reinicializações.

Captura de tela emprestada de este blogpost, que também mostra sysv-rc-conf - uma ferramenta semelhante que também permite definir o nível de execução. (Para aqueles que por acaso se preocupam o suficiente com os níveis de execução para querer mudá-los :)

Infelizmente, rcconf não funciona com upstart (serviços listados em /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 quando ssh-ing em um servidor (Apache, Tomcat, mdadm, boinc-client...) ainda não foi transferido para o upstart.

Eu descobri que até bionic existe esta ferramenta GUI, algo como BUM, mas compatível com Upstart: Jobs-Admin

sudo apt-get install jobs-admin

Editar o arquivo de configuração inicial existente (conforme descrito acima) não é uma boa ideia. Um pacote atualizado pode fornecer uma configuração atualizada e você teve que repetir suas alterações repetidamente.

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" , então haveria um arquivo chamado /etc/init/foobar.conf com sua configuração inicial. Agora você não quer remover esse arquivo, nem modificá-lo-mas nem você quer que este serviço seja executado? Então coloque um substituir arquivo ao lado dele: /etc/init/foobar.override, contendo (opcionalmente o cabeçalho com a descrição e) em vez disso, o start on / stop on linhas você coloca uma linha com uma palavra: manual. Desta forma, você diz ao upstart para basicamente usar o foobar.conf, mas substitua a definição de inicialização para iniciar apenas esse serviço quando aplicado manualmente (via service foobar start em nosso exemplo).

Há também o Boot-Up Manager.

Instalar: sudo apt-get install bum

Mais informações: http://www.marzocca.net/linux/bum.html

Método mais simples para mim como eu uso CLI só é update-rc.d.

Para ativar ou desativar o início automático na reinicialização, etc :

sudo update-rc.d <daemon|service> <enable|disable>

Exemplo:

update-rc.d spamassassin enable

Para parar ou iniciar um daemon ou verificar seu status:

sudo service <daemon|service> <start|stop|restart|reload|force-reload|status>

Exemplo:

sudo service spamassassin status  spamassassin.service - Perl-based spam filter using text analysis   Loaded: loaded (/lib/systemd/system/spamassassin.service; disabled; vendor preset: enabled)   Active: active (running) since Thu 2020-05-21 13:04:10 SAST; 4s ago  Process: 1928 ExecStart=/usr/sbin/spamd -d --pidfile=/var/run/spamd.pid $OPTIONS (code=exited, status=0/SUCCES Main PID: 1949 (spamd)    Tasks: 3 (limit: 2361)   CGroup: /system.slice/spamassassin.service           ├─1949 /usr/bin/perl -T -w /usr/sbin/spamd -d --pidfile=/var/run/spamd.pid --create-prefs --max-child           ├─1951 spamd child           └─1952 spamd child`  etc  etc

update-rc.d pode fazer um pouco mais do que o básico mostrado acima:

usage: update-rc.d [-f] <basename> remove       update-rc.d [-f] <basename> defaults       update-rc.d [-f] <basename> defaults-disabled       update-rc.d <basename> disable|enable [S|2|3|4|5]        -f: force

Como sempre; você Van se refere manual.

Eu uso Stacer:

Stacer é um otimizador de Sistema de código aberto e monitor de aplicativo que ajuda os usuários a gerenciar todo o sistema com diferentes aspectos, é um utilitário de Sistema tudo em um.

Mostra serviços e processos também. Uma caixa de ferramentas completa do sistema GUI.

Observe que a resposta para o Ubuntu 14.04 ainda está faltando aqui.

@ MarcelloNuccio :começando com o Ubuntu 15.04, o Upstart foi descontinuado em favor do Systemd.

Para networking, consulte: How to restart the networking service? - Ask Ubuntu

[Isto] (Enabling/Disabling Services in Fedora 12 | RyuSlash's Blog) seria útil para aqueles presos no Fedora 12 e pousaram aqui. Caso linkrot ’ chkconfig` seja o que você está procurando.

Os programas de inicialização automática são configurados em manifestosautostart 'ou em'*.serviço ' arquivos em vários locais, bem como eminit.d ’ ou ‘crontab’. Ver: upstart - How to start application after login on CentOS? - Unix & Linux Stack Exchange