开发者

How to load system-wide daemons on MacOS

I'm trying to load my daemon-app with this command launchctl load /Library/LaunchDaemons/myPlistFileName It works fi开发者_如何学JAVAne, but only while my user is logged in on system.

How can i load my deamon-app, which will stay loaded without any user logged into the system (like the windows-services)??

The command sudo launchctl load /Library/LaunchDaemons/myPlistFileName give me an error -> nothing found to load

Which is the right way to do this?


EDIT: 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/>

Currently it is so: at system-start my daemon starts with root-permissions. After i've logged in with my user-account, the daemon-process restarts and my user is the new owner of the process


Using "sudo launchctl load <name-of-plist-file>; sudo launchctl start <job-name>" or, on newer versions of launchctl, "sudo launchctl submit -l <label> -- <command> [<arg0> ... <argN>]" is the way to go.

It is hard to diagnose why your "sudo launchctl" command failed without actually seeing the PLIST, but you should make sure that the permissions for the PLIST are readable for everyone (but writeable only by root:wheel or root:admin), you should be sure that the "UserName" and "GroupName" fields have been given, you should make sure that "Program" gives an absolute path to the program in question (and does not, for example, rely on the user's particular setting of the PATH environment variable), and the "WorkingDirectory" and "EnvironmentVariables" fields should be properly defined if applicable.

See Also: man launchd.plist

EDIT:
You might also try running the "stop" and "unload" commands before attempting to do the "sudo ... load".

EDIT:
Now that you've uploaded your PLIST file it is clear what your problem is... you cannot use the open command when running as another user. See running OS X GUI app as root. Also, the KeepAlive and OnDemand keys are, I'm pretty sure, gratuitous. I think those can be deleted.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜