1

次のような plist を作成します。

<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd\">
<!-- My version "1.2.3" -->
<plist version=\"1.0\">
<dict>
<key>Disabled</key>
<false/>
<key>Label</key>
<string>MyPlistName</string>
<key>ProgramArguments</key>
<array>
<string>MyDaemonBinPath</string>
<string>-log</string>
<string>MyLogLevel</string>
<string>-launchd</string>
</array>
<key>Sockets</key>
<dict>
<key>Listeners</key>
<dict>
<key>SockFamily</key>
<string>Unix</string>
<key>SockPathMode</key>
<integer>438</integer>
<key>SockPathName</key>
<string>MySocketName</string>
</dict>
</dict>
<key>StandardErrorPath</key>
<string>MySTDERRLogPath</string>
<key>WaitForDebugger</key>
<false/>
<key>inetdCompatibility</key>
<dict>
<key>Wait</key>
<false/>
</dict>
</dict>
</plist>

/Library/LaunchDaemons に配置します

次に、次のコマンドを実行します。

/bin/launchctl unload /Library/LaunchDaemons/MyPlistName.plist
/bin/launchctl load /Library/LaunchDaemons/MyPlistName.plist

plist で指定されたソケットに接続し、次のように入力すると、デーモンが起動します。

launchctl list

デーモンは登録されていますが、ログアウトして再度ログインし、再度リストを要求すると、登録されなくなり、ソケットに接続してデーモンを起動できません。

これをセッション間で永続化するために、plistまたはデーモンに設定する必要がある特別な権限はありますか?

4

1 に答える 1

0

/var/log/system.logエラーがないか確認しましたか?通常の plist は/Library/LaunchDaemons/、起動時に root として実行されます。それらが実行されるかどうかを確認sudo launchctl listすることをお勧めします。そうでない場合は、ルートに一致するように plist の所有権/読み取り+書き込み属性を変更する必要がある場合があります。最後に、ロギングを改善するために以下を含めることができます。

<key>StandardErrorPath</key>
  <string>/logs/launchd_myprogram_stderr.log</string>
<key>StandardOutPath</key>        
  <string>/logs/launchd_myprogram_stdout.log</string>
于 2013-03-14T22:40:54.337 に答える