Questão Como remover serviços do systemd


Se eu instalar um novo serviço, decidir que não quero mais o aplicativo e excluí-lo, o serviço ainda estará listado na saída de systemctl Como erro.

De onde vem isso e como posso removê-los completamente?


96


origem




Respostas:


Minha receita para obliteração de serviço (tenha cuidado com o rm afirmações!)

systemctl stop [servicename]
systemctl disable [servicename]
rm /etc/systemd/system/[servicename]
rm /etc/systemd/system/[servicename] symlinks that might be related
systemctl daemon-reload
systemctl reset-failed

É possível que o serviço systemd 'encapsule' os scripts de estilo antigo em /etc/init.d, então você pode querer limpá-lo também, mas isto é não onde os serviços do systemd vivem.


163



Esteja ciente de que há vários locais onde os arquivos da unidade Systemd são armazenados, /usr/lib/systemd/system e também /etc/systemd/system/. Para referência, consulte: access.redhat.com/documentation/pt-BR/Red_Hat_Enterprise_Linux/… - Mark Edington
Eu também tive que remover /etc/init.d/[servicename] antes de correr systemctl reset-failed - Andrea Romagnoli
Certo, esqueci de desativar antes de remover os arquivos da unidade. BTW, para encontrar todos os arquivos da unidade para remover, eu inspeciono a saída de systemctl cat [servicename]. - Amir
Pode ser um script de estilo antigo "encapsulado" em /etc/init.d/ mas, se você não removê-lo, verá que ele ainda aparece nos serviços que sobraram da sua remoção. Eu posso te dizer que esse foi o meu caso. Você poderia simplesmente adicionar isso à sua resposta para torná-la mais completa, mas esperamos que a próxima pessoa que precise dela analise os comentários. - Marlon
@ Marlon - Se o seu /etc/init.d serviço ainda está em execução depois de remover o serviço de wrapper, então ele está configurado fora do escopo restrito desta questão (que é simplesmente sobre systemd). Se você tiver links sym de /etc/r c* apontando para /etc/init.d, então você não está executando o systemd. - Mark Lakata


Parece que você desinstalou, mas não removeu o gancho systemd:

# systemctl disable [servicename]


23





Você provavelmente está procurando reset-failed:

$ sudo systemctl reset-failed
$

Na página man do systemd:

reset-failed [PATTERN...]

Redefinir o estado "falhou" das unidades especificadas ou, se não houver nome de unidade              é passado, redefinir o estado de todas as unidades. Quando uma unidade falha em algum              maneira (ou seja, processo de sair com código de erro diferente de zero, encerrando              anormalmente ou tempo limite), ele entrará automaticamente no campo "falhou"              estado e seu código de saída e status é gravado para introspecção por              o administrador até que o serviço seja reiniciado ou reconfigurado              comando.


16





Adicionando para @ mark-lakataresposta e tendo em mente a atenção necessária para o rm comando. [chkconfig] pode simplificar o processo!Clique aqui para ler sobre o chkconfig)

Para reiterar a lista de comandos:

  1. systemctl stop [servicename]
  2. chkconfig [servicename] off
  3. systemctl daemon-reload
  4. systemctl reset-failed

Nota: O primeiro comando é opcional, dependendo se você deseja manter o serviço em execução na presente sessão ou não (como para esta questão, o comando deve ser usado).

O segundo comando cuida da desabilitação e remoção (seguindo os links simbólicos) do serviço.


3



chkconfig foi o comando original para ativar / desativar os serviços do SysVinit. Nos sistemas usando systemd, pode estar presente como um comando de compatibilidade com versões anteriores; mas o nativo systemctlcomando é tão simples: systemctl disable [servicename] - telcoM
Ok, mas a razão para eu usar este comando é, você não precisa executar explicitamente o comando rm - garlicFrancium