Як активувати запущений журнал роботи на OS X?


35

Як активувати запущений журнал роботи на OS X 10.6?

Я додав новий демон, який не запускається належним чином (статус є 1).

Я хочу налагодити проблему, але мені не вдалося знайти launchdжурнали, вони не входять /var/log/launchd.log.

Відповіді:


26

Я знайшов рішення

 sudo launchctl log level debug 

і після цього

 tail -f /var/log/system.log

1
Я зрозумів, що цій ОС потрібен адміністратор, як і все інше. Тотально шукав цього після дня крику "WTF де багатослівний прапор!" OSX скеля, звичайно, але складно, щоб отримати ручку. Thx +1
chiggsy

Продовження, FYI: Це працює і з OS X 10.7.2. Спасибі.
Алан В. Сміт

У мене виникли проблеми з моїми серверами Leopard, і я подумав, що з моїм запущеним плістом щось не так (хоча той же пліст працює і в Snow Leopard). Я випадково
натрапив

27
Це більше не працює з 10.10 Yosemite. версія startctl: Darwin System Bootstrapper 2.0.0: вт 9 вересня 16:30:56 PDT 2014
JeanMertz

9
@JeanMertz - будь-яка альтернатива?
Умань

20

Якщо припустити, що ви намагаєтеся зареєструвати процес, а не запускати себе, якщо ви додаєте такі рядки у файл запущеного списку:

<key>StandardOutPath</key>
<string>/path/to/logfile.log</string>
<key>StandardErrorPath</key>
<string>/path/to/another_logfile.log</string>

і перезавантажте процес, будь-який журнал чи друк, який у вас є внутрішнім сценарієм, будуть захоплені в одному з цих двох файлів кожного разу, коли він запускається. хоча, як видається, обертати файли, ви вирішуєте. як ви могли очікувати, якщо ви використовуєте один і той же файл в обох випадках, він запише і помилку, і stdout в одне і те ж місце.

Див.: Налагодження запущених робочих місць у розділі Створення демонстраційних демонів та агентів .


17

У ОС 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мною
Том
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.