Ваше приложение демонизирует себя (то есть уходит в фон)? Если это так, то он по существу отсоединяется от launchd и, следовательно, не позволяет launchd управлять им.
РЕДАКТИРОВАТЬ: если приложение не демонизирует себя, следующая вещь, на которую нужно обратить внимание, это посмотреть, что, как думает launchd, происходит с launchctl list my.service
. Это должно вывести список свойств демона, включая его PID (если launchd считает, что он работает) и LastExitStatus (независимо от того, был ли он успешно завершен в прошлый раз). Соответствует ли PID фактическому действующему процессу? Изменяется ли результат при попытке остановить службу (особенно если PID меняется на 0)? Показывает ли список процессов (например, с ps -axj
) какие-либо дочерние процессы, живущие после выхода из родительского процесса?
Да, и просто для уверенности: при управлении LaunchDaemons вам нужно использовать sudo launchctl
(без sudo launchctl будет пытаться управлять агентами LaunchAgents в вашей пользовательской сессии).