Wie lösche (nicht deaktiviere / maskiere) ich eine Einheit in Systemd?

7

Manchmal mache ich versehentlich eine neue Einheit, und dann muss ich zu / etc / systemd gehen, um nach der Einheit zu suchen und alle zugehörigen Dateien / Skripte / Links / etc. Zu löschen.

Gibt es einen besseren Weg? Wie ein einzelner Befehl, der alles löscht, was mit einem Einheitennamen verbunden ist?

Howard
quelle
2
Was genau meinst du mit "zugehörigen Dateien / Skripten / Links / etc."?
Elias Probst
@EliasProbst die Dateien und Symbolverknüpfungen, die systemd nach dem Ausführen automatisch erstellt systemd enable <service_name>.
Howard
Welche Distribution?
Nils

Antworten:

4

Wie ein einzelner Befehl, der alles löscht, was mit einem Einheitennamen verbunden ist?

Ich denke, Sie benötigen zwei Befehle, einen zum Trennen der Einheit und einen zum Löschen der Einheitendatei.

Die Dateien und Symbolverknüpfungen, die systemd erstellt, werden automatisch erstellt, nachdem ich systemd enable ausgeführt habe

Du meinst systemctl enable .... Wie auch immer, von man systemctl:

deaktiviere [NAME ...]

Deaktiviert eine oder mehrere Einheiten. Dadurch werden alle Symlinks zu den angegebenen Gerätedateien aus dem Gerätekonfigurationsverzeichnis entfernt und die durch enable vorgenommenen Änderungen rückgängig gemacht. Beachten Sie jedoch, dass dadurch alle Symlinks zu den Gerätedateien (dh einschließlich manueller Ergänzungen ) entfernt werden, nicht nur die tatsächlich durch enable erstellten. Dieser Aufruf lädt implizit die Systemd-Daemon-Konfiguration neu, nachdem die Deaktivierung der Einheiten abgeschlossen wurde. Beachten Sie, dass dieser Befehl die deaktivierten Einheiten nicht implizit stoppt .

Die Symlinks dienen dazu, die Einheit einem Ziel zuzuordnen rcN.d. Dies entspricht den Symlinks, die in sysV- Runlevel-Verzeichnissen verwendet werden. 1 Durch Deaktivieren einer Einheit werden diese entfernt, da sie die Ausführung mit einem beliebigen Ziel ermöglichen.

Sobald diese verschwunden sind, bleibt nur noch die .serviceDatei übrig, die Sie vermutlich erstellt haben. Löschen / entfernen Sie das und Sie sind fertig.


1. Um es klar zu sagen: Sie verwenden sysV nicht. Wenn Ihnen diese Beobachtung nichts bedeutet, machen Sie sich darüber keine Sorgen. Möglicherweise befinden sich /etc/rcN.dVerzeichnisse auf Ihrem System. Ignorieren Sie diese.

Goldlöckchen
quelle
0

insservsollte diesen Job machen - egal ob sysVinit oder systemD .

Referenz: OpenSuSE

Beispiel: insserv -d nfs Deaktiviert den Start des NFS- Dienstes.

Nils
quelle
1
Was meinst du? Wird insserveine Möglichkeit zum Löschen einer Einheit in systemd verwendet? Könnten Sie ein Beispiel geben?
Neil
@Neil Ich habe meine Antwort mit einem Beispiel aktualisiert.
Nils