Dienste und systemd

Verwaltete Daten- oder Laufzeitverzeichnisse scheitern

StateDirectory oder RuntimeDirectory scheitert vor ExecStart. Prüfe Pfadkollisionen, Eigentümer und Platz unter Erhalt vorhandener Anwendungsdaten.

Auf dieser Seite
  1. Symptome und Geltungsbereich
  2. Mögliche Ursachen
  3. Sicher prüfen
  4. Nächste Schritte nach Befund
  5. Quellen und Prüfung
  6. Verwandte Probleme

Symptome und Geltungsbereich

  • Der Start endet mit STATE_DIRECTORY oder RUNTIME_DIRECTORY.
  • Der vorgesehene Verzeichnispfad kollidiert mit einer Datei oder ungeeigneten Verknüpfung.

Betroffene Umgebung

systemd-Units mit StateDirectory oder RuntimeDirectory, einschließlich DynamicUser-Verzeichnisstruktur.

Erkennbare Meldungen (synthetische Beispiele)
systemd[1]: example.service: Main process exited, code=exited, status=238/STATE_DIRECTORY

Prüfe genanntes Verzeichnis und vorhergehenden Dateisystemfehler.

systemd[1]: example.service: Main process exited, code=exited, status=233/RUNTIME_DIRECTORY

Prüfe /run-Kontext und Platz vor der Annahme beschädigter dauerhafter Daten.

Mögliche Ursachen

Das sind mögliche Erklärungen, keine bestätigte Diagnose. Mehrere unabhängige Fehler können gleichzeitig vorliegen.

  • Eine Pfadkollision, fehlerhafte Eigentümerzuordnung oder schreibgeschützter Speicher kann den Aufbau blockieren.
  • Erschöpfter Platz oder Inode-Vorrat kann die Erstellung verhindern; /run kann unabhängig von /var/lib voll sein.

Sicher prüfen

Führe jeweils einen Befehl in der passenden Sitzung aus. Lies zuerst die Erklärung. Großgeschriebene Platzhalter brauchen deine Werte; Werkzeuge und Rechte unterscheiden sich je nach Distribution. Die Website zeigt Befehle an und führt sie niemals aus.

Prüfschritt 1

Ersetze die Unit; prüfe Vorgaben vor Annahmen zu Pfadeigentümern.

systemctl show example.service -p StateDirectory -p RuntimeDirectory -p User -p DynamicUser

Ergebnis einordnen: StateDirectory enthält dauerhafte Daten, RuntimeDirectory Laufzeitdaten. DynamicUser kann privaten Speicher mit Kompatibilitäts-Symlinks nutzen.

Prüfschritt 2

Ersetze den Pfad durch den betroffenen verwalteten Journalpfad; nur Metadaten.

namei -l /var/lib/example

Ergebnis einordnen: Eine Datei am Verzeichnispfad unterscheidet sich von einem legitimen DynamicUser-Symlink. Prüfe Ziele vor Verschiebungen.

Prüfschritt 3

Liest Platz üblicher Daten- und Laufzeitdateisysteme; passe Pfade für andere Roots an.

df -h /var/lib /run

Ergebnis einordnen: Ein volles /run-tmpfs kann trotz Platz auf dauerhaftem Speicher blockieren. Prüfe bei Allokationsfehlern trotz Platz auch freie Inodes.

Nächste Schritte nach Befund

Bestätigte Pfadkollision auflösen

Wenn eine fremde Datei den Verzeichnispfad belegt, stoppe den Dienst und sichere sie vor der vorgesehenen Verzeichnisbereitstellung. Erhalte bestehende Daten und die dokumentierte private Struktur.

Vorsicht: Lösche keine Dienstdaten und ändere Eigentümer nicht rekursiv ohne Prüfung von Inhalt und DynamicUser-Verhalten.

Wiederherstellung / Rücknahme: Stoppe den Dienst, stelle gesicherten Pfad und frühere Unit zurück und verbinde vor dem Start die ursprünglichen Daten.

Hat dir dieser Hinweis geholfen?

Hinweis teilen#

Gezielte Speicherbeschränkung beheben

Wenn Platz oder Schreibschutz den Fehler verursacht, stelle auf diesem Dateisystem nutzbaren Platz her oder verschiebe Daten nach dem unterstützten Verfahren. Reduziere den ermittelten Laufzeitverbraucher bei vollem /run.

Vorsicht: Datenumzüge können Stopp und Sicherungen erfordern. RuntimeDirectory-Inhalte verschwinden beim Stopp normalerweise, sofern kein Erhalt konfiguriert ist.

Wiederherstellung / Rücknahme: Stelle alte Verzeichniseinstellungen und Sicherungen bei gestoppter Anwendung zurück; vermische keine auseinanderentwickelten Live-Daten.

Hat dir dieser Hinweis geholfen?

Hinweis teilen#

Quellen und Prüfung

Diese Anleitung basiert auf Originalquellen von Projekten oder Distributionen und wurde am genannten Datum redaktionell geprüft. Das ist eine Quellenprüfung, kein Nachweis einer auf deiner Hardware reproduzierten Lösung. Log-Beispiele sind synthetische Testdaten. Versionsabhängige Details müssen zur installierten Ausgabe passen.