Как загрузить общесистемные демоны на MacOS - PullRequest
2 голосов
/ 14 декабря 2009

Я пытаюсь загрузить свое приложение-демон с помощью этой команды launchctl load /Library/LaunchDaemons/myPlistFileName Оно работает нормально, но только когда мой пользователь вошел в систему.

Как я могу загрузить мое deamon-приложение, которое останется загруженным без входа любого пользователя в систему (например, windows-services) ??

Команда sudo launchctl load /Library/LaunchDaemons/myPlistFileName выдает ошибку -> ничего не найдено для загрузки

Какой правильный способ сделать это?


РЕДАКТИРОВАТЬ: My Plist-File

<key>Label</key>
<string>com.myCompany.myApplication</string>
<key>ProgramArguments</key>
<array>
    <string>open</string>
    <string>-g</string>
    <string>/Applications/myAppDir/myApplication.app</string>
</array>
<key>UserName</key>
<string>root</string>
<key>GroupName</key>
<string>wheel</string>
<key>KeepAlive</key>
<true/>
<key>OnDemand</key>
<false/>

В настоящее время это так: при запуске системы мой демон запускается с правами root. После того, как я вошел в систему под своей учетной записью, процесс-демон перезапускается, и мой пользователь становится новым владельцем процесса

1 Ответ

3 голосов
/ 14 декабря 2009

Использование "sudo launchctl load ; sudo launchctl start <имя-задания>" или, в более новых версиях launchctl, "sudo launchctl submit -l

Трудно определить причину сбоя команды «sudo launchctl», не видя PLIST, но вы должны убедиться, что разрешения для PLIST доступны для чтения всем (но доступны для записи только root: wheel или root: admin). , вы должны быть уверены, что поля «UserName» и «GroupName» заданы, вы должны убедиться, что «Program» дает абсолютный путь к рассматриваемой программе (и, например, не полагается на конкретные настройки пользователя) переменной среды PATH), а поля «WorkingDirectory» и «EnvironmentVariables» должны быть правильно определены, если это применимо.

См. Также: man launchd.plist

РЕДАКТИРОВАТЬ:
Вы также можете попробовать выполнить команды «stop» и «unload», прежде чем пытаться выполнить «sudo ... load».

РЕДАКТИРОВАТЬ:
Теперь, когда вы загрузили файл PLIST, стало ясно, в чем ваша проблема ... вы не можете использовать команду open при запуске от имени другого пользователя. См. приложение OS X с графическим интерфейсом от имени root . Кроме того, ключи KeepAlive и OnDemand, я уверен, являются бесплатными. Я думаю, что они могут быть удалены.

...