首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Launchd代理未启动

Launchd代理未启动
EN

Stack Overflow用户
提问于 2010-03-17 00:22:51
回答 2查看 4.9K关注 0票数 1

我正在尝试编写一个launchd agent,为每个登录到Mac系统的用户运行一个简单的应用程序。

我已经创建了一个名为com.mycompany.myapp.plist的文件,并将其放在/Library/LaunchAgents中。该文件的内容包括:

代码语言:javascript
复制
{
    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密钥,因为我认为代理会自动启动。问题是,除非我手动发出以下两个命令,否则代理不会启动:

代码语言:javascript
复制
launchctl load -S Aqua -D all
launchctl start com.mycompany.myapp

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

代码语言:javascript
复制
{
    "Label" = "com.mycompany.myapp";
    "LimitLoadToSessionType" = "System";
    "OnDemand" = true;
    "LastExitStatus" = 0;
    "TimeOut" = 30;
    "Program" = "/Users/thomi/myapp";
    ProgramArguments = (
        "/Users/thomi/myapp",
        "-l",
        "-d",
    );
};

请注意,LimitLoadToSessionType参数已更改。

我是不是漏掉了什么?是否有不同的机制来启动这样的代理?为什么要更改LimitLoadToSessionType属性?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-03-23 17:46:37

找到问题了--显然,对于旧式的plist文件,launchd不能正常工作。它加载正常,但不会运行任何东西。将上述文件重新创建为新样式的XML文件解决了此问题。

票数 2
EN

Stack Overflow用户

发布于 2010-03-17 09:37:33

我不确定这是否是问题所在,但我认为你不应该同时指定OnDemand/RunAtLoad和KeepAlive。根据我对文档的理解,KeepAlive密钥替换了OnDemand/RunAtLoad组合。

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2456112

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档