1

launchd agentMacOSXシステムにログインするすべてのユーザーに対して簡単なアプリケーションを実行するを作成しようとしています。

名前の付いたファイルを作成し、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エージェントが自動的に起動すると思ったので、最初はキーを設定していませんでした。問題は、次の2つのコマンドを手動で発行しない限り、エージェントが起動しないことです。

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プロパティが変更されたのですか?

4

2 に答える 2

2

それが問題かどうかはわかりませんが、OnDemand/RunAtLoadとKeepAliveの両方を一緒に指定するべきではないと思います。ドキュメントを理解しているので、KeepAliveキーはOnDemand/RunAtLoadコンボを置き換えます。

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

于 2010-03-17T01:37:32.797 に答える
2

問題が見つかりました-どうやら古いスタイルのファイルlaunchdでは正しく動作しません。plistロードはOKですが、何も実行されません。上記のファイルを新しいスタイルのファイルとして再作成するとXML、問題が解決しました。

于 2010-03-23T09:46:37.483 に答える