Відповіді:
Я знайшов рішення
sudo launchctl log level debug
і після цього
tail -f /var/log/system.log
Якщо припустити, що ви намагаєтеся зареєструвати процес, а не запускати себе, якщо ви додаєте такі рядки у файл запущеного списку:
<key>StandardOutPath</key>
<string>/path/to/logfile.log</string>
<key>StandardErrorPath</key>
<string>/path/to/another_logfile.log</string>
і перезавантажте процес, будь-який журнал чи друк, який у вас є внутрішнім сценарієм, будуть захоплені в одному з цих двох файлів кожного разу, коли він запускається. хоча, як видається, обертати файли, ви вирішуєте. як ви могли очікувати, якщо ви використовуєте один і той же файл в обох випадках, він запише і помилку, і stdout в одне і те ж місце.
Див.: Налагодження запущених робочих місць у розділі Створення демонстраційних демонів та агентів .
У ОС 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 у свою оболонку наступного разу (і лише наступного разу), коли служба запуститься:
sudo launchctl debug gui/$UID/dev.localmon --stdout --stderr
Оскільки це звисає з відкритими та готовими TTY, перейдіть до іншого терміналу та запустіть:
launchctl start dev.localmon
# start is a legacy command and doesn't use the fancy new service-target notation
Потім, повертаючись у перший термінал, ви повинні побачити вихід. (Як не дивно, він не закривається, коли процес обслуговування вмирає, тому вам доведеться Ctrl-C.)
Btw, коли ви виправите ваш конфігураційний файл із тим, до чого PATH або середовище порушували службу раніше, вам все одно доведеться використовувати старий launchctl unload ~/Library/LaunchAgents/dev.localmon.plist && launchctl load ~/Library/LaunchAgents/dev.localmon.plist
двоступінчастий процес, оскільки передбачувана uncache
підкоманда документації має такий ефект:
Команда ще не реалізована.
Так, стратегія Apple після випуску після роботи: "Швидко рухайтеся та ламайте справи"
sudo launchctl debug
виходить зі Could not find domain for
мною