我越来越多地使用launchd来自动化我家庭服务器上的所有内容,并且我想在我的客户端计算机上利用它的一些功能。我基本上想弄清楚如何始终安装我的服务器的AFP共享。我看到自己遇到的唯一真正的问题是,当我在一个有AFP阻塞的网络上时,脚本会撞到墙上。我认为做三次尝试然后放弃,但是当我离开网络时我必须重新启动脚本。我不太确定如何在plist中编写if构造以确保它可以连接,或者检查卷是否已经安装。到目前为止我写的唯一脚本是为了让OS X应用程序保持活力。
答案 0 :(得分:0)
看看LocationChanter。它使用的plist项目是:
<key>WatchPaths</key>
<array>
<string>/Library/Preferences/SystemConfiguration</string>
</array>
据我所知,每次网络更改时,该目录中的文件都会更新。这样就可以给你第一个触发器。要查看的另一个plist项是“PathState”。 launchd.plist man page包含以下文档:
PathState <dictionary of booleans>
Each key in this dictionary is a file-system path. If the value of
the key is true, then the job will be kept alive as long as the
path exists. If false, the job will be kept alive in the inverse
condition. The intent of this feature is that two or more jobs may
create semaphores in the file-system namespace.
我刚刚开始使用它,但我认为您可以将它与WatchPaths结合使用来设置您正在寻找的内容。想法是观察安装的驱动器,如果没有尝试安装它。
当然,你可能想要一些油门。特别是如果客户端机器将连接到其他网络,但我认为这些元素应该让你开始。