Подтвердить что ты не робот

Что означает статус запуска 78? почему мой пользовательский агент не работает?

Я хочу запустить службу синхронизации unison, работающую в фоновом режиме, когда я вхожу в систему. Но код состояния моего агента - 78. Я не знаю, почему, я попробовал некоторое исправление, размещенное в Интернете, но оно просто не работает.

Какая проблема? ниже - файл 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>syncmyproject</string>
    <key>StandardOutPath</key>
    <string>/var/log/syncmyproject.log</string>
    <key>StandardErrorPath</key>
    <string>/var/log/syncmyproject.log</string>
    <key>RunAtLoad</key>
    <true/>
    <key>KeepAlive</key>
    <true/>
    <key>Debug</key>
    <true/>
    <key>EnableGlobbing</key>
    <true/>
    <key>ProgramArguments</key>
    <array>
      <string>/usr/local/bin/unison</string>
      <string>-auto</string>
      <string>-batch</string>
      <string>-repeat watch</string>
      <string>~/home/project</string>
      <string>~/project</string>
    </array>
</dict>
</plist>
4b9b3361

Ответ 1

Я прочитал man launchctl, найдите 78 означает function not implemented. Это не очень помогает.

Наконец, я заработал, на самом деле были ошибки в plist, я рекомендую установить brew cask install launchcontrol, который является инструментом gui для launchctll, он может помочь обнаружить ошибки и проблемы при съемке.

Ответ 2

[Иди в эту проблему, так документируя, что я нашел]

"78" - это последний код выхода выполняемого вами задания. От man launchctl:

Без аргументов перечислите все задания, загруженные в launchd в три колонны. В первом столбце отображается PID задания, если он запущен, нин. Второй столбец отображает последний статус выхода задания. Если число в этом столбце отрицательное, оно представляет собой отрицательный сигнал, который прекратил работу. Таким образом, "-15" указывает, что работа была прекращена с помощью SIGTERM. Третья колонка - это метка задания. Если указано [label], выводится информация о запрошенном задании.

т.е. вам необходимо прочитать документацию (или исходный код) для любой работы, которую вы запускаете. (В моем случае mysqld)

Стоит отметить, что "78" упоминается как стандартный код выхода в Linux, что указывает на ошибку конфигурации. Поэтому взгляните на конфигурацию своей работы (и журналы ошибок?), Чтобы узнать, есть ли у вас что-то неправильно сконфигурированное.

Ответ 3

Вот что меня поймало: в Mac OS X вы можете запускать shell-скрипты из командной строки, даже если в файле есть только "w370". Однако, когда вы запускаете их с помощью запуска, вы должны указать, в каком двоичном файле следует запустить script. Предположим, что при запуске из командной строки он просто использует оболочку, в которой вы сейчас находитесь (в моем случае bash), но при запуске из launchd не существует "окружения script". Я добавил

#!/bin/sh

в качестве первой строки в файле script, а затем она сработала.

Ответ 4

Я получил эту ошибку, пытаясь запустить моно, чтобы запустить локальный веб-сервер. Оказывается, исправление заключалось в том, чтобы не использовать монофонический путь, заданный "mono" (символическая ссылка: /Library/Frameworks/Mono.framework/Versions/Current/Commands/mono), но фактическое местоположение exe (в моем случае /Library/Frameworks/Mono.framework/Commands/mono).

Ответ 5

Я обнаружил, что ошибка связана с разрешениями. Я был тем, что пытался перенаправить ошибки и журналы в каталог /var/log (который мой пользователь не умеет писать!) изменив путь к чему-то, где мой пользователь имел соответствующие разрешения, исправил его.

Будьте внимательны при загрузке ваших LaunchAgents. Не используйте sudo для загрузки plist, если вы находитесь в каталоге ~/Library/LaunchAgents.