Как мне активировать запуск журнала в OS X 10.6?
Я добавил нового демона, который не запускается должным образом (статус 1
).
Я хочу отладить проблему, но я не смог найти launchd
журналы, они не в /var/log/launchd.log
.
Я нашел решение
sudo launchctl log level debug
и после этого
tail -f /var/log/system.log
Предполагая, что вы пытаетесь зарегистрировать свой процесс, а не сам по себе launchd, если вы включите следующие строки в файл launchd plist:
и перезагрузите процесс, все журналы или распечатки, которые у вас есть внутри вашего скрипта, будут записываться в один из этих двух файлов при каждом его запуске. хотя вращение файлов, похоже, зависит от вас. Как и следовало ожидать, если вы используете один и тот же файл в обоих случаях, он будет записывать и ошибку, и стандартный вывод в одно и то же место.
См. Раздел « Отладка запущенных заданий» в разделе «Создание демонов и агентов запуска» .
источник
На OS X 10.11 (El Capitan) вы можете использовать
sudo launchctl debug <service-target> --stdout --stderr
для включения одноразового ведения журнала, если вы не хотите использовать опцию файловой системы, предложенную @peter.Многие вещи отличаются в текущей реализации
launchctl
, и<service-target>
это немного странно. Например, предположим, что у меня есть локальный сервис, на~/Library/LaunchAgents/dev.localmon.plist
котором я настраиваюсь , который имеет «метку»dev.localmon
. Его<service-target>
этоgui/$UID/dev.localmon
, где$UID
это ваш идентификатор пользователя, который, так как вы используете это в CLI, ваша оболочка будет интерполировать для вас.Итак, предположив, что мой
dev.localmon
сервис зависал при запуске (это было так), я мог бы вызвать следующее, чтобыlaunchctl
перенаправить stdout и stderr процесса в мою оболочку при следующем (и только при следующем) запуске службы:Так как это зависает с открытыми и готовыми TTY, перейдите в другой терминал и запустите:
Затем, вернувшись в первый терминал, вы должны увидеть результат. (Как ни странно, он не закрывается, когда процесс службы умирает, поэтому вам придется Ctrl-C.)
Между прочим, после того, как вы исправите свой конфигурационный файл с помощью какой-либо PATH или среды, которая раньше нарушала работу сервиса, вам все равно придется использовать старый
launchctl unload ~/Library/LaunchAgents/dev.localmon.plist && launchctl load ~/Library/LaunchAgents/dev.localmon.plist
двухэтапный шаг, так как подразумеваемаяuncache
подкоманда документации имеет следующий эффект:Yay для стратегии выпуска Apple после выхода на работу: «Двигайся быстрее и ломай вещи»
источник
sudo launchctl debug
выходитCould not find domain for
для меня