【发布时间】:2011-01-28 04:56:19
【问题描述】:
我正在尝试编写一个launchd agent,它为每个登录到 Mac OS X 系统的用户运行一个简单的应用程序。
我创建了一个名为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
此外,当我运行 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 属性发生了变化?
【问题讨论】:
标签: macos daemon agent launchd