systemd
nos fornece o systemctl
conjunto de comandos que é usado principalmente para permitir que os serviços iniciem no momento da inicialização. Também podemos iniciar, parar, recarregar, reiniciar e verificar o status dos serviços com a ajuda de systemctl
.
Podemos fazer, por exemplo sudo systemctl enable service_name
, e service_name
iniciaremos automaticamente no momento da inicialização. Também podemos desativar os serviços para não iniciar no momento da inicialização.
A única diferença entre os comandos service
e systemctl
que systemctl
pode ser usada para ativar o início dos serviços em tempo de execução? Podemos usar systemctl
em qualquer serviço? Que outras diferenças significativas existem?
command-line
services
systemd
luv.preet
fonte
fonte
Respostas:
O
service
comando é um script de wrapper que permite que os administradores do sistema iniciem, parem e verifiquem o status dos serviços sem se preocupar muito com o sistema init real que está sendo usado. Antes da introdução do systemd, foi um wrapper para/etc/init.d
scripts e de Upstartinitctl
comando, e agora é um wrapper para esses dois esystemctl
bem.Use a fonte, Luke!
Ele verifica o Upstart:
Se isso não funcionar, ele procura pelo systemd:
E se isso também falhar, ele voltará aos
/etc/init.d
scripts do System V :Como o
service
comando é um wrapper bastante simples, ele suporta apenas um subconjunto limitado de ações em comparação com o que o sistema init real pode fornecer.Para portabilidade em várias versões do Ubuntu, os usuários podem usar com segurança o
service
comando para iniciar, parar, reiniciar ou examinar o status de um serviço. Para tarefas mais complexas, no entanto, o comando real sendo usado, seja esseinitctl
ousystemctl
ou o/etc/init.d
script pode ter que ser usado diretamente.Além disso, sendo um invólucro, o
service
script em alguns casos também faz mais do que o comando equivalente direto pode fazer. Por exemplo:/etc/init.d
scripts em um ambiente limpo. (Observe a chamada de comando longaenv
narun_via_sysvinit
função acima.)restart
nos sistemas Upstart para uma combinação destop
/start
, uma vez que um simplesinitctl restart
erro ocorrerá se o serviço já não estiver em execução.Ele interrompe soquetes ao interromper serviços do systemd que possuem soquetes associados:
Os serviços iniciados foram ativados diretamente no arquivo de configuração do serviço (ou desativados por substituições) e os scripts do System V foram ativados ou desativados com o
update-rc.d
comando (que gerenciava links simbólicos nos/etc/rc*
diretórios); portanto, oservice
comando nunca esteve envolvido na ativação ou desativação de serviços na inicialização .fonte
Há muito mais do que você mencionou que
systemctl
é capaz.systemd
trabalha com unidades, existem diferentes tipos de unidades: destinos, serviços, soquetes etc. destinos são o mesmo conceito que os níveis de execução, são um conjunto de unidades.Você pode usar
systemctl
para definir ou obter o destino padrão do sistema.Você pode entrar em outros destinos:
Outros destinos são: multiusuário, gráfico, recue, emergência, reinicialização, desligamento.
Como você disse, você pode usar
systemctl
para gerenciar serviços, alguns dos outros comandos relacionados ao gerenciamento de serviços que eu conheço são:Você pode usá-lo para descobrir um status de serviço:
Você pode mascarar ou desmascarar um serviço:
Quando você mascara um serviço ao qual ele está vinculado
/dev/null
, manual ou automaticamente outros serviços não podem ativá-lo / ativá-lo. (você deve desmascará-lo primeiro).Outro uso do systemctl é listar unidades:
Que listam todos os tipos de unidades, carregadas e ativas.
Listar unidades de serviço:
Ou para listar todas as unidades disponíveis, não apenas as carregadas e ativadas:
Você pode criar aliases ou até controlar máquinas remotas
Por outro lado,
service
faz o que tem que fazer, gerenciando serviços e não tendo nada a ver com os negócios de outras pessoas;)fonte
service
pode fazer, mas nãosystemctl
?service start
tentativas falhas . Antes do systemd,service start
deixava-me ver imediatamente por que meu serviço não foi iniciado. Depois do sistema, tenho que olhar para quatro ou cinco logs diferentes antes de poder encontrá-lo. Tudo isso dito, meu comentário é sem dúvida fora de tópico e provavelmente será excluído.service
comando, não fazia parte da pergunta?