Wohin geht der stderr von launchd?

1

launchdElemente in / Library / LaunchDaemon leiten möglicherweise stdin / stdout / stderr um. ZB habe ich einen Artikel, der sagt:

<key>StandardOutPath</key>
    <string>/Library/Logs/rnamanagedocker_out.log</string>
<key>StandardErrorPath></key>
    <string>/Library/Logs/rnamanagedocker_err.log</string>

Ich bekomme den stdoutEingang /Library/Logs/rnamanagedocker_out.log, aber es wird kein /Library/Logs/rnamanagedocker_err.logEingang erstellt, solange ich sicher bin, dass er stderrausgegeben wird.

Irgendwelche Tipps?

[UPDATE 17. Januar] Ich habe jetzt bemerkt, dass ich stderr in einer erwarteten Ausgabedatei bekomme. Entweder habe ich mich geirrt oder es gab ein Setup, das ich nicht reproduzieren kann und bei dem die stderr-Ausgabe verloren gegangen ist. Wahrscheinlich das erste (Picknick, Problem im Stuhl, nicht im Computer).

gctwnl
quelle

Antworten:

1

Stellen Sie sicher, dass das System tatsächlich in diese Datei schreiben darf. Ich würde vorschlagen, die Datei einfach im Voraus zu erstellen (als leere Datei). Sie können dies mit dem Terminal wie folgt tun:

touch /Library/Logs/rnamanagedocker_err.log

Versuchen Sie dann zunächst, die Datei für alle beschreibbar zu machen, um festzustellen, ob sie dadurch funktioniert:

chmod a+w /Library/Logs/rnamanagedocker_err.log

Wenn Sie möchten, können Sie dann beginnen, die Berechtigungen für die Datei zu beschränken, um auf das von Ihnen gewünschte Niveau zu gelangen.

jksoegaard
quelle
Eigentlich sollte das nicht helfen, denn wenn Sie die out-Datei in dasselbe Verzeichnis schreiben können, warum dann nicht die err-Datei? Aber ich habe es trotzdem versucht, und es hat nicht geholfen.
gctwnl
Ich weiß nicht, warum Sie diese Erwartungen hatten, aber wenn eine Datei bereits existiert und beschreibbar ist, wäre es logisch, warum Sie in diese Datei schreiben könnten, aber nicht in die andere.
Jksoegaard
Ich hatte diese Erwartung, weil die andere Datei auch beim ersten Schreiben erstellt wurde. Ich habe es nie von Hand gemacht. Aber einverstanden, Fehler können sich anders verhalten.
gctwnl
Du hast das nicht in deine Frage geschrieben, also konnte ich das nicht wissen, als ich antwortete. Wie haben Sie überprüft, ob tatsächlich etwas an stderr ausgegeben wird?
Jksoegaard
Durch Ausführen des Befehls von Hand.
gctwnl