Я начинаю работать с launchd и хочу настроить файл plist таким образом, чтобы всякий раз, когда я вставляю SD-карту в свой мини-сервер Mac (с сервером Snow Leopard), я хотел запускать сценарий оболочки (который должен копировать все файлы jpg, переименуйте их и т. д.).
Итак, я создал файл plist в ~ / Library / LaunchAgents (см. Его содержимое ниже - он должен искать изменения в / Volumes) и создал сценарий оболочки, который говорит "beep" - позже это будет делать что-то более полезное.
Файл plist регистрируется с помощью launchctl, и когда я его запускаю (launchctl start com.peters.runwhenSDmount), компьютер издает звуковой сигнал всякий раз, когда карта памяти подключена, и остается тихим, когда карты памяти нет. Таким образом, очевидно, что plist вызывает сценарий оболочки, который впоследствии проверяет наличие конкретной 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