Verfolgen Sie, wo ein Daemon versucht, seine Konfigurationsdatei zu finden

Verfolgen Sie, wo ein Daemon versucht, seine Konfigurationsdatei zu finden

Ich habe auf einem Kubuntu-System einen Daemon installiert, der versucht, eine bestimmte Konfigurationsdatei an einem unbekannten Ort zu finden. Ich habe das Dateisystem buchstäblich mit symbolischen Links zur Konfigurationsdatei gefüllt, aber es meldet immer noch „Datei nicht gefunden“.

Gibt es einen Befehl, den ich schreiben kann, der alle Versuche protokolliert, auf nicht vorhandene Dateien auf der Festplatte zuzugreifen, sodass ich herausfinden kann, wo der Versuch unternommen wird, nach der Datei zu suchen?

Antwort1

Sie können strace auf den Prozess anwenden, wenn Sie dessen PID kennen:

strace -f -p 123 | tee testoutput.txt

(unter der Annahme einer PID von 123). Das „-f“ steht für „follow forks“ (vereinfacht ausgedrückt), „-p“ bedeutet „PID folgt“. man straceWeitere Einzelheiten finden Sie unter. Kurz gesagt, strace verfolgt alle Aktionen, die der Prozess versucht, z. B. beim Öffnen von Dateien, Lesen aus ihnen oder Schreiben in sie. Am besten leitet man die Ausgabe zur Analyse in eine Datei um – in meinem Beispiel wird dies erreicht, indem es an tee weitergeleitet wird, das die Ausgabe aufteilt, sodass sie auf der Konsole angezeigt und in die angegebene Datei geschrieben wird.

Suchen Sie in der Ausgabe nach etwas wie

read(51, 0x7f287a7b36f0, 4096)          = -1 EAGAIN (Resource temporarily unavailable)

(Ja, das ist der falsche Fehler – aber der einzige, den ich bisher finden konnte) – also ein readgefolgt von etwas in Klammern, dann einige Leerzeichen, gefolgt von einem „=“ und einer negativen Zahl (= Fehler). Ich schätze, Sie sollten etwas wie „ENOTFOUND“ finden, um die fehlende Datei anzuzeigen (kenne den genauen Fehlercode nicht).

verwandte Informationen