PLIST似乎是正确的,但执行没有显示结果

时间:2013-07-17 15:48:29

标签: file directory monitoring fswatch

我写了一个代理来监控关键系统文件:ag1-launchagents

#!/bin/bash

arg1=/System/Library/LaunchAgents

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

我为其他6个目录创建了相同的文件,以便单独监视它们以进行更改并通过growlnotify打印通知。脚本使用命令行完美地运行。

下一步是通过* .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似乎是正确的。我通过plutil检查了它。但每当我通过launchctl load * .plist运行plist并更改代理应该观察到的任何文件夹时,我都不会收到任何通知。

注意:我在ProgramArguments块中使用一行尝试了它,只启动了一个* .sh文件。但它也没有用。

对此有何看法?

1 个答案:

答案 0 :(得分:0)

问题似乎已经解决了。

我尝试了一切,并运行了一个代理实例。因此我假设,单个PLIST文件无法运行所有7个实例。

我认为我要么必须完全放弃这个想法,而是从头开始使用不同的技术或实现7个不同的plist文件。不是一个可以理解的解决方案。