Wie aktiviere ich die Launchd-Protokollierung unter OS X 10.6?
Ich habe einen neuen Daemon hinzugefügt, der nicht richtig startet (Status ist 1
).
Ich möchte das Problem beheben, konnte jedoch keine launchd
Protokolle finden . Sie befinden sich nicht in /var/log/launchd.log
.
Angenommen, Sie versuchen, Ihren Prozess zu protokollieren, anstatt ihn selbst zu starten, wenn Sie die folgenden Zeilen in die Datei launchd plist aufnehmen:
Wenn Sie den Prozess neu laden, werden alle in Ihrem Skript vorhandenen Protokollierungen oder Druckvorgänge bei jeder Ausführung in einer dieser beiden Dateien aufgezeichnet. Das Drehen der Dateien scheint Ihnen überlassen zu sein. Wie zu erwarten, werden Fehler und stdout an derselben Stelle protokolliert, wenn Sie in beiden Instanzen dieselbe Datei verwenden.
Siehe: Debuggen von gestarteten Jobs im Abschnitt Erstellen von Start-Daemons und Agents .
quelle
Unter OS X 10.11 (El Capitan) können Sie die
sudo launchctl debug <service-target> --stdout --stderr
einmalige Protokollierung aktivieren, wenn Sie die von @peter vorgeschlagene Dateisystemoption nicht verwenden möchten.Viele Dinge sind in der aktuellen Implementierung von anders
launchctl
und das<service-target>
ist irgendwie seltsam. Angenommen, ich habe einen lokalen Dienst, den ich~/Library/LaunchAgents/dev.localmon.plist
unter "label" konfigurieredev.localmon
. Das<service-target>
istgui/$UID/dev.localmon
, wo$UID
ist Ihre Benutzer-ID, die, da Sie dies auf der CLI ausführen, Ihre Shell für Sie interpolieren wird.Angenommen also, mein
dev.localmon
Dienst stürzt beim Start ab (es war), dann könnte ich Folgendes aufrufen, umlaunchctl
die stdout- und stderr-Anweisung des Prozesses beim nächsten (und erst beim nächsten) Start des Dienstes in meine Shell zu leiten:Da dies bei den Open-and-Ready-TTYs hängt, gehen Sie zu einem anderen Terminal und führen Sie Folgendes aus:
Dann, zurück im ersten Terminal, sollten Sie die Ausgabe sehen. (Seltsamerweise wird es nicht geschlossen, wenn der Serviceprozess beendet wird. Daher müssen Sie Strg-C drücken.)
Übrigens, sobald Sie Ihre Konfigurationsdatei mit dem Pfad oder der Umgebung repariert haben, die zuvor den Dienst unterbrochen haben, müssen Sie immer noch den alten
launchctl unload ~/Library/LaunchAgents/dev.localmon.plist && launchctl load ~/Library/LaunchAgents/dev.localmon.plist
zweistufigen Befehl verwenden, da der angeblicheuncache
Unterbefehl der Dokumentation den folgenden Effekt hat:Yay for Apples Strategie nach der Veröffentlichung von Jobs: "Schnell vorankommen und Dinge kaputt machen"
quelle
sudo launchctl debug
geht mitCould not find domain for
für mich