1

フォルダーの変更を監視し、変更があった場合にシェル スクリプトをトリガーする小さな LaunchAgent を作成しました。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC -//Apple Computer//DTD PLIST 1.0//EN
           http://www.apple.com/DTDs/PropertyList-1.0.dtd >
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.myusername.w2</string>
    <key>ProgramArguments</key>
    <array>
    <string>/Users/myusername/Desktop/alert</string>
    </array>
    <key>WatchPaths</key>
    <array>
        <string>/Users/myusername/Personnel</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>WorkingDirectory</key>
    <string>/Users/myusername</string>
    <key>StandardErrorPath</key>
    <string>myjob.log</string>
    <key>StandardOutPath</key>
    <string>myjob.log</string>
    <key>Debug</key>
    <true/>
    <key>WaitForDebugger</key>
    <true/>

</dict>
</plist>
  • ファイル名はラベルと同じです
  • Launchctl を使用して Agent をロードして起動しました
  • セッションからログアウト/ログインしました
  • Launchctl リストで確認すると、エージェントの PID は正しく、ステータス コードは 0 です
  • 私のURLはすべて絶対です

それにもかかわらず、期待どおりに機能していません。監視フォルダーにファイルを追加しましたが、スクリプトが起動されません。

ログ ファイルは作成されますが空です (エラーではありませんか?)

誰かが正しい方向を示すことができれば、それは素晴らしいことです.

4

2 に答える 2

0

RunAtLoadオプションを に設定しているためtrue、ログイン直後にスクリプトが起動されます。出力に PID が表示されると言っていますlaunchctl list。これは、launchd にとって、エージェントがすでに実行されており、再度実行する必要がないことを意味します。

RunAtLoadキーを削除するか、/Users/myusername/Desktop/alertスクリプトをすばやく終了させることをお勧めします。-出力の PID 列に記号が表示されますlaunchctl list

于 2013-09-06T08:37:18.380 に答える