3

Я создал пакет pkg для создания LaunchAgent для запуска демона и в файле сценария после установки использовал этот способ для запуска демона:

launchctl load -s /Library/LaunchAgent/file-name.plist

Это сработало хорошо.

Однако есть проблема: при первом запуске демона, убивая этого демона и переустанавливая LauchAgent, он не смог запустить или убить демона. Это скажет это в терминале:

file-name.plist: Already loaded

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


Изменение файла скрипта после установки:

sudo -u $USER /bin/launchctl unload -S Aqua /Library/LauchAgent/file-name.plist
sudo -u $USER /bin/launchctl load -S Aqua /Library/LauchAgent/file-name.plist

согласно комментарию Даниэля все-таки удалось решить предыдущую проблему. Это хорошо работало на Mac OS X 10.6 и 10.7, но на 10.5 демон не мог запустить этот путь. Я попробовал файл скрипта в терминале после установки. Вот некоторая информация:

launchctl:Error unloading: file-name.plist
launch_msg():Socket is not connected

2 ответа2

2

Проблема, с которой вы столкнулись, возникает, когда вы пытаетесь загрузить LaunchAgent, когда в систему вошли более одного пользователя (т.е. с помощью быстрого переключения пользователей). См. Это сообщение Куинна «Эскимос» от Apple Developer Relations в списке рассылки, и, для более подробной информации, его сообщение на Old Nabble. Обратитесь туда за решениями (TL; DR: перезагрузка).

Заметьте, я не совсем уверен, существует ли проблема только в 10.5 - я не смог найти проблему с радаром 5476420, на которую ссылается Куинн, на открытом радаре, чтобы подтвердить ее статус.

0

Чтобы он работал в 10.5, используйте su вместо sudo:

su "$USER" -c "/bin/launchctl unload -S Aqua /Library/LauchAgent/file-name.plist"
su "$USER" -c "/bin/launchctl load -S Aqua /Library/LauchAgent/file-name.plist"

Я не знаю, почему они ведут себя по-разному.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .