문제

나는 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

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top