我越来越喜欢使用launch来自动化我的家庭服务器上的一切,我想在我的客户端机器上利用它的一些功能。我基本上想弄清楚如何保持我的服务器的AFP共享挂载在任何时候。我看到自己遇到的唯一真正的问题是,当我在AFP被封锁的网络上时,脚本会撞到墙上。我想做一些事情,比如尝试3次然后放弃,但是当我离开网络时,我必须重新启动脚本。我不太确定如何在plist中编写if构造以确保它可以连接,或者检查卷是否已经挂载。到目前为止,我编写的唯一脚本是保持OS X应用程序的运行。
看一下LocationChanter。它使用的plist项是:
<key>WatchPaths</key>
<array>
<string>/Library/Preferences/SystemConfiguration</string>
</array>
据我所知,该目录中的文件在每次网络更改时都会更新。这就是第一个触发点。要查看的另一个plist项是"PathState"。launchd。Plist手册页有以下文档:
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结合使用来设置你正在寻找的内容。这个想法是观察挂载的驱动器,如果它不存在,尝试挂载它。
当然,你可能需要一些油门。特别是如果客户端机器将连接到其他网络,但我认为这些元素应该让您开始。