0

重要なシステム ファイルを監視するエージェントを作成しました: ag1-launchagents

#!/bin/bash

arg1=/System/Library/LaunchAgents

fswatch $arg1 "growlnotify -n "FSWatch" -m "FSWATCH:Changed:$arg1" -s"

変更を個別に監視し、growlnotify を介して通知を出力するために、他の 6 つのディレクトリ用に同じファイルを作成しました。スクリプトは、コマンド ラインを使用して完全に正常に動作します。

次のステップは、*.plist ファイルを介して ag1-ag7 を自動起動することです。

<?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.user.fswatch</string>
    <key>ProgramArguments</key>
    <array>
        <string>/Library/Scripts/Shell/ag1-launchagent.sh</string>
        <string>/Library/Scripts/Shell/ag2-launchdaemons.sh</string>
        <string>/Library/Scripts/Shell/ag3-bin.sh</string>
    <string>/Library/Scripts/Shell/ag4-etc.sh</string>
    <string>/Library/Scripts/Shell/ag5-usrbin.sh</string>
    <string>/Library/Scripts/Shell/ag6-usrsbin.sh</string>
    <string>/Library/Scripts/Shell/ag7-sbin.sh</string> 
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>Nice</key>
    <integer>10</integer>
    <key>KeepAlive</key>
    <false/>
    <key>AbandonProcessGroup</key>
    <true/>
</dict>
</plist>

しかし、うまくいきません。

plistは正しいようです。putilで確認しました。しかし、launchctl load *.plist を介して plist を実行し、エージェントが監視する必要があるフォルダーを変更すると、通知が 1 つも表示されません。

注: ProgramArguments ブロック内の 1 行で試してみましたが、*.sh ファイルは 1 つしか開始しませんでした。しかし、それもうまくいきませんでした。

それについて何か考えはありますか?

4

1 に答える 1

0

問題は解決したようです。

すべてを試したところ、エージェントのインスタンスが 1 つ実行されました。したがって、単一の PLIST ファイルで 7 つのインスタンスすべてを実行することはできないと思います。

アイデアを完全に放棄して、別の手法を使用してゼロから始めるか、7 つの異なる plist ファイルを実装する必要があると思います。まともな解決策ではありません。

于 2013-07-18T07:15:54.877 に答える