Jak aktywować uruchamiane logowanie w OS X 10.6?
Dodałem nowego demona, który nie uruchamia się poprawnie (status to 1
).
Chcę debugować problem, ale nie udało mi się znaleźć launchd
dzienników, których nie ma /var/log/launchd.log
.
Znalazłem rozwiązanie
sudo launchctl log level debug
a potem
tail -f /var/log/system.log
Zakładając, że próbujesz zarejestrować swój proces, a nie sam się uruchomić, jeśli w uruchomionym pliku plist zostaną uwzględnione następujące wiersze:
i ponownie załadować proces, wszelkie rejestrowanie lub drukowanie wewnętrzne skryptu będzie przechwytywane w jednym z tych dwóch plików przy każdym uruchomieniu. chociaż obracanie plików zależy od Ciebie. jak można się spodziewać, jeśli użyjesz tego samego pliku w obu instancjach, zarejestruje on zarówno błąd, jak i standardowe wyjście w tym samym miejscu.
Patrz: Debugowanie uruchomionych zadań w sekcji Tworzenie demonów i agentów uruchamiania .
źródło
W systemie OS X 10.11 (El Capitan) można użyć,
sudo launchctl debug <service-target> --stdout --stderr
aby włączyć rejestrowanie jednorazowe, jeśli nie chcesz korzystać z opcji systemu plików sugerowanej przez @peter.Wiele rzeczy różni się w obecnej implementacji
launchctl
i<service-target>
jest to trochę dziwne. Załóżmy na przykład, że mam skonfigurowaną usługę lokalną~/Library/LaunchAgents/dev.localmon.plist
, która ma „etykietę”dev.localmon
. To<service-target>
jestgui/$UID/dev.localmon
, gdzie$UID
jest twój identyfikator użytkownika, który, ponieważ uruchamiasz to w CLI, twoja powłoka interpoluje dla ciebie.Załóżmy więc, że moja
dev.localmon
usługa uległa awarii podczas uruchamiania (tak było), mógłbym wywołać następujące polecenie, abylaunchctl
przepuścić stdout procesu i stderr do mojej powłoki przy następnym (i tylko następnym razem) uruchomieniu usługi:Ponieważ zawiesza się z otwartymi i gotowymi terminalami TTY, przejdź do innego terminala i uruchom:
Następnie, z powrotem w pierwszym terminalu, powinieneś zobaczyć wynik. (Dziwne, nie zamyka się, gdy proces usługi umiera, więc musisz nacisnąć Ctrl + C).
Btw, po naprawieniu pliku konfiguracyjnego za pomocą PATH lub środowiska, które wcześniej przerywało usługę, nadal musisz użyć starego
launchctl unload ~/Library/LaunchAgents/dev.localmon.plist && launchctl load ~/Library/LaunchAgents/dev.localmon.plist
dwuetapowego kroku, ponieważ rzekomauncache
komenda dokumentacji ma następujący efekt:Yay dla strategii Apple po opublikowaniu oferty pracy: „Poruszaj się szybko i niszcz rzeczy”
źródło
sudo launchctl debug
wychodzi zeCould not find domain for
mną