시작 에이전트가 시작되지 않습니다
문제
나는 a를 쓰려고 노력하고있다 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
내가 달릴 때 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
구식으로 제대로 작동하지 않습니다 plist
파일. 괜찮아 지지만 아무것도 실행하지 않습니다. 위의 파일을 새 스타일로 재창조합니다 XML
파일이 문제를 해결했습니다.
다른 팁
그것이 문제인지 확실하지 않지만 ondemand/runatload와 keepalive를 모두 지정해서는 안된다고 생각합니다. 문서를 이해하면 KeepAlive 키는 OnDemand/Runatload 콤보를 대체합니다.
http://developer.apple.com/mac/library/technotes/tn2005/tn2083.html#seccodingrecemendations