我试图写运行为登录到Mac OS X的系统中的每个用户的简单应用程序一个launchd agent

我已经创建了一个com.mycompany.myapp.plist文件命名,并把它夹在/Library/LaunchAgents。该文件的内容是:

{
    LimitLoadToSessionType = "Aqua";
    StartInterval = 10;
    OnDemand = NO;
    KeepAlive = YES;
    RunAtLoad = YES;
    Label = "com.mycompany.myapp";
    Program = "/Users/thomi/myapp";
    ProgramArguments = (
        "/Users/thomi/myapp",
        "-l",
        "-d",
    );
}

起初我没有足够的StartInterval按键,因为我认为代理会自动启动。的问题是,所述活性剂不启动,除非我手动发出以下两个命令:

launchctl load -S Aqua -D all
launchctl start com.mycompany.myapp

Firther,当我运行launchctl list com.mycompany.myapp我得到以下输出:

{
    "Label" = "com.mycompany.myapp";
    "LimitLoadToSessionType" = "System";
    "OnDemand" = true;
    "LastExitStatus" = 0;
    "TimeOut" = 30;
    "Program" = "/Users/thomi/myapp";
    ProgramArguments = (
        "/Users/thomi/myapp",
        "-l",
        "-d",
    );
};

注意,LimitLoadToSessionType参数已经改变。

我失去了一些东西在这里?是否有不同的机制来启动这样的代理商?为什么在LimitLoadToSessionType属性更改?

有帮助吗?

解决方案 2

发现问题 - 显然launchd不与旧式plistde文件正常工作。它加载行,但将不会运行任何东西。重新创建上述文件作为一种新型XML文件解决了问题。

其他提示

不知道它的问题,但我认为你不应该同时指定的OnDemand / RunAtLoad和Keepalive在一起。据我了解的文档中,保持活动键取代了按需/ RunAtLoad组合。

http://developer.apple.com/mac /library/technotes/tn2005/tn2083.html#SECCODINGRECOMMENDATIONS

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top