launchctl не может запустить двоичный файл и выходит с кодом 78

Я создавал приложение golang с графическим интерфейсом в системном трее. я хотел launchctl запускать мою программу всякий раз, когда я вхожу в систему. Программа компилируется и запускается без ошибок, однако, когда launchctl запускается, я вижу это: Service exited with abnormal code: 78, Возможно, это как-то связано с правами.

  • Сначала я попытался установить права текущего пользователя для обоих plist файл и двоичный файл. Все еще ошибка 78,

  • Затем я изменил права plist файл и бинарный файл для root и запуска sudo launchctl, Я все еще вижу ошибку 78,

/var/log/system.log имеет эти ошибки:

14:46:00 Macchiato com.apple.xpc.launchd[1] (com.test.test[519]): Service could not initialize: 18A391: xpcproxy + 11291 [1534][8188841E-6D08-3F80-8488-9B5D7462BACB]: 0xd
14:46:00 Macchiato com.apple.xpc.launchd[1] (com.test.test[519]): Service exited with abnormal code: 78
14:46:00 Macchiato com.apple.xpc.launchd[1] (com.test.test): Service only ran for 0 seconds. Pushing respawn out by 10 seconds.

plist Сам файл:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
        <key>Label</key>
        <string>com.test.test</string>
        <key>ProgramArguments</key>
        <array>
                <string>/Users/test-user/test/test</string>
        </array>
        <key>RunAtLoad</key>
        <true/>
        <key>ProcessType</key>
        <string>Standard</string>
        <key>KeepAlive</key>
        <true/>
        <key>StandardErrorPath</key>
        <string>/var/log/test-err.log</string>
        <key>StandardOutPath</key>
        <string>/var/log/test-out.log</string>
</dict>
</plist>

Журналы ошибок пусты.

Когда я запускаю двоичный файл вручную, значок приложения появляется на панели задач, как и ожидалось.

Есть один интересный момент - если я наберу вручную launchctl load -w com.test.test.plistПриложение работает хорошо - до перезагрузки. После перезагрузки launchctl бросает 78 ошибка.

Почему это происходит?

2 ответа

Я думаю, что решил свой вопрос. Похоже ошибка 78 приходит, когда я использую

<key>StandardErrorPath</key>
<string>/var/log/test-err.log</string>
<key>StandardOutPath</key>
<string>/var/log/test-out.log</string>

Когда я удалил эти строки, ошибка исчезла. Это особенно странно, потому что plist файл имеет root-права и launchd работает как root либо...

Ошибка 78 означает, что нет прав на запись в указанные вами файлы журналов.

чтобы устранить эту ошибку, измените владельца или права доступа к файлам журнала.

Другие вопросы по тегам