views:

98

answers:

1

I'm trying to load my daemon-app with this command launchctl load /Library/LaunchDaemons/myPlistFileName It works fine, 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

+2  A: 

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.

Michael Aaron Safyan
I've added my configuration-file.I have also tried to execute the stop and unload commands, before loading my plist with "launchctl"
Nobik
Yesterday I found exactly the same solution elsewhere. Now it works fine :) Thanks.
Nobik