我开始使用 launchd 并希望设置一个 plist 文件,这样每当我将 SD 卡插入我的 Mac mini 服务器(使用 Snow Leopard 服务器)时,我希望运行一个 shell 脚本(它应该复制所有 jpg 文件,重命名它们等)。
因此,我在 ~/Library/LaunchAgents 中创建了一个 plist 文件(其内容见下文 - 它应该寻找对 /Volumes 的更改),我创建了一个 shell 脚本,上面写着“哔” - 稍后它会做一些更有用的事情.
plist文件是用launchctl注册的,当我运行它时(launchctl start com.peters.runwhenSDmount),只要插入存储卡,计算机就会发出哔哔声,没有存储卡时会保持静音。因此,显然 plist 确实调用了 shell 脚本,该脚本随后检查特定的 SD 卡是否存在。我假设这也证明了 SD 卡的权限没有问题。
但是,它似乎并没有自己运行???知道为什么吗?
plist 文件:~/Library/LaunchAgents/com.peters.runwhenSDmount.plist
<?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">
<dict>
<key>Label</key>
<string>com.peters.runwhenSDmount</string>
<key>LowPriorityIO</key>
<true/>
<key>ProgramArguments</key>
<array>
<string>/Users/peter/Library/Scripts/runwhenSDmount</string>
</array>
<key>ThrottleInterval</key>
<integer>10</integer>
<key>WatchPaths</key>
<array>
<string>/Volumes</string>
</array>
</dict>
</plist>
外壳脚本:~/Library/Scripts/runwhenSDmount
#!/bin/bash
if [ -d "/Volumes/NIKON D40X" ]; then
say beep
fi