Я не знаю, что означает состояние выхода 78, но я не ожидал бы, что этот скрипт будет делать что-то обнаруживаемое при запуске в качестве агента запуска, потому что его выходные данные никуда не направлены. Когда вы запускаете его из Терминала, его вывод присоединяется к окну Терминала, так что там появляется «привет». Но launchd не имеет связи с Терминалом (или любой другой релевантной выходной целью), поэтому «привет» отбрасывается. Если вы хотите проверить, работает ли он, вы можете направить его выходные данные (как стандартный вывод, так и вывод ошибок) в файлы, добавив эти ключи в .plist (а затем выгрузив и перезагрузив его):
<key>StandardOutPath</key> <string>/Users/yangyy/hello-output.txt</string> <key>StandardErrorPath</key> <string>/Users/yangyy/hello-errors.txt</string>
Теперь также возможно, что у launchd возникли другие проблемы, даже при запуске скрипта. Чтобы узнать, сообщает ли launchd о каких-либо проблемах, просмотрите файл системного журнала ( tail -f /var/log/system.log
или запустите /Applications/Utilities/Console.app), затем попробуйте выгрузить + перезагрузить агент и посмотреть, появляется ли что-либо соответствующее в журнале.