2

このコマンドを使用してdaemon-appをロードしようとしていますlaunchctl load /Library/LaunchDaemons/myPlistFileName。正常に動作しますが、ユーザーがシステムにログインしている間のみです。

ユーザーがシステムにログインしていなくてもロードされたままになるdeamon-appをロードするにはどうすればよいですか(windows-servicesなど)??

コマンドsudo launchctl load /Library/LaunchDaemons/myPlistFileNameは私にエラーを与えます->ロードするものが見つかりません

これを行う正しい方法はどれですか?


編集:私のPlist-ファイル

<key>Label</key>
<string>com.myCompany.myApplication</string>
<key>ProgramArguments</key>
<array>
    <string>open</string>
    <string>-g</string>
    <string>/Applications/myAppDir/myApplication.app</string>
</array>
<key>UserName</key>
<string>root</string>
<key>GroupName</key>
<string>wheel</string>
<key>KeepAlive</key>
<true/>
<key>OnDemand</key>
<false/>

現在はそうです:system-startで、私のデーモンはroot-permissionsで始まります。ユーザーアカウントでログインした後、daemon-processが再起動し、ユーザーがプロセスの新しい所有者になります

4

1 に答える 1

3

「sudo launchctl load <name-of-plist-file>; sudo launchctl start <job-name>」を使用するか、新しいバージョンの launchctl では、「sudo launchctl submit -l <​​label> -- <command> [<arg0> ... <argN>]" がその方法です。

実際に PLIST を確認せずに「sudo launchctl」コマンドが失敗した理由を診断するのは困難ですが、PLIST のアクセス許可がすべてのユーザーに対して読み取り可能 (ただし、root:wheel または root:admin のみが書き込み可能) であることを確認する必要があります。 「UserName」フィールドと「GroupName」フィールドが指定されていることを確認してください。「Program」が問題のプログラムへの絶対パスを指定していることを確認する必要があります (たとえば、ユーザーの特定の PATH 設定に依存しないでください)。環境変数)、「WorkingDirectory」および「EnvironmentVariables」フィールドは、該当する場合は適切に定義する必要があります。

関連項目: man launchd.plist

編集:
「sudo ... load」を実行する前に、「stop」および「unload」コマンドを実行してみてください。

編集:
PLISTファイルをアップロードしたので、問題が何であるかは明らかです...別のユーザーとして実行している場合、openコマンドを使用できません。root として OS X GUI アプリを実行するを参照してください。また、KeepAlive と OnDemand のキーは、私が確信しているのは無料です。これらは削除できると思います。

于 2009-12-14T18:56:42.583 に答える