Como desabilitar um serviço sem usar 'systemctl disable'

7

Existe um serviço que quero executar somente quando outro serviço falha ( [Unit] OnFailure=foo ), mas não quero que esse serviço ( foo ) inicie automaticamente na inicialização. Uma opção é executar systemctl disable foo , mas estou procurando outro caminho.

Antecedentes: Estou criando uma imagem do sistema operacional e não quero ter que inicializar a máquina, executar esse comando ( systemctl disable foo ) e, em seguida, desligá-lo antes de declarar minha imagem final.

    
por Tshepang 21.04.2015 / 18:06

3 respostas

3

Todos os serviços são "desativados" por padrão; "habilitação" é opt-in.

Se foo.service for seu serviço personalizado, ele não será iniciado a menos que explicitamente atraído por algo (como a diretiva OnFailure= ) e você não deverá "desativar" nada.

    
por 21.04.2015 / 18:44
18

systemctl enable funciona manipulando links simbólicos em /etc/systemd/system/ (para daemons do sistema). Quando você enable um serviço, ele olha para as WantedBy linhas na seção [Install] e plica links simbólicos nesses diretórios .wants .

systemctl disable faz o oposto.

Você pode simplesmente remover esses links simbólicos - fazer isso manualmente é totalmente equivalente a usar systemctl disable .

    
por 21.04.2015 / 18:41
3

Você pode usar systemctl start ServiceName.service e systemctl stop Service.Name.service para iniciar e parar um serviço, respectivamente. Em contraste com systemctl enable ... e systemctl disable ... , os comandos de início e parada duram apenas a sessão atual, portanto, quando você reinicializa a máquina, as alterações não serão salvas.

    
por 21.04.2015 / 18:46

Tags