Question Comment supprimer les services systemd


Si j'installe un nouveau service puis décide que je ne veux plus de cette application et la supprime, le service est toujours répertorié dans la sortie de systemctl comme Erreur.

D'où cela vient-il et comment puis-je les enlever complètement?


97
2017-12-01 02:23


origine




Réponses:


Ma recette pour effacer le service (attention aux rm déclarations!)

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

Il est possible que le service systemd «enveloppe» les anciens scripts de style dans /etc/init.d, vous pouvez donc les nettoyer également, mais ne pas où les services systemd vivent.


164
2017-07-06 16:46



Sachez qu'il existe plusieurs emplacements où sont stockés les fichiers d'unité Systemd, notamment /usr/lib/systemd/system et aussi /etc/systemd/system/. Pour référence voir: access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/... - Mark Edington
Je devais aussi enlever /etc/init.d/[servicename] avant de courir systemctl reset-failed - Andrea Romagnoli
Bon, j'ai oublié de désactiver avant de supprimer les fichiers de l'unité. BTW, pour trouver tous les fichiers d'unité à supprimer, j'inspecte la sortie de systemctl cat [servicename]. - Amir
Il peut s'agir d'un ancien script "enveloppé" dans /etc/init.d/ mais si vous ne le supprimez pas, vous le trouverez toujours sous les services restants de votre suppression. Je peux vous dire que c'était le cas pour moi. Vous pourriez simplement ajouter cela à votre réponse pour la rendre plus complète, mais j'espère que la prochaine personne qui en aura besoin examinera les commentaires. - Marlon
@Marlon - Si votre /etc/init.d service est toujours en cours d'exécution après la suppression du service wrapper, puis il est configuré en dehors de l'étendue étroite de cette question (qui est simplement à propos de systemd). Si vous avez des liens sym de /etc/r c* pointant vers /etc/init.d, alors vous n'exécutez pas systemd. - Mark Lakata


On dirait que vous l'avez désinstallé, mais n'a pas supprimé le hook systemd:

# systemctl disable [servicename]


23
2017-12-01 05:39





Vous cherchez probablement reset-failed:

$ sudo systemctl reset-failed
$

A partir de la page de manuel systemd:

reset-failed [PATTERN...]

Réinitialiser l'état "échoué" des unités spécifiées ou, si aucun nom d'unité              est passé, réinitialiser l'état de toutes les unités. Quand une unité échoue dans certains              façon (c.-à-d. processus sortant avec un code d'erreur non nul, se terminant              anormalement ou à expiration), il entrera automatiquement le "échoué"              état et son code de sortie et son statut est enregistré pour l'introspection par              l'administrateur jusqu'à ce que le service soit redémarré ou réinitialisé avec cette              commander.


16
2018-04-13 09:41





Ajouter à @ mark-lakataréponse et en gardant à l’esprit l’attention requise pour rm commander. [chkconfig] peut simplifier le processus! (cliquez ici pour en savoir plus sur chkconfig)

Pour réitérer la liste des commandes:

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

Remarque: La 1ère commande est facultative selon que vous souhaitez ou non maintenir le service en cours d'exécution dans la session actuelle (pour cette question, la commande doit être utilisée).

La 2ème commande prend en charge la désactivation et la suppression (en suivant les liens symboliques) du service.


3
2017-07-29 12:48



chkconfig était la commande d'origine pour activer / désactiver les services SysVinit. Dans les systèmes utilisant systemd, il peut être présent en tant que commande de compatibilité descendante; mais le natif systemctlla commande est tout aussi simple: systemctl disable [servicename] - telcoM
Ok, mais la raison pour laquelle j'utilise cette commande est que vous n'avez pas besoin d'exécuter explicitement la commande rm - garlicFrancium