Я запускаю Snowleopard 10.6.8 на сервере Macmini и хочу, чтобы этот сервер выполнял скрипт всякий раз, когда файл или папка вставляются / редактируются или удаляются из указанной папки. Так как я хотел бы, чтобы это поведение работало по сети, когда система включена (но не вошла в систему), я создал скрипт .plist, который установлен как LaunchDeamon. .Plist имеет те же права, что и все мои другие .plists: «Система: чтение и запись. Колесо и все: только для чтения "

В качестве тестового примера я установил следующий скрипт с небольшой помощью из lingon 2.1. Этот скрипт должен выполнять growltime.scpt всякий раз, когда рабочий стол (<WatchPaths>) обнаруживает изменение или когда что-то монтируется (<StartOnMount>).

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.watchfolder.growltime</string>
    <key>ProgramArguments</key>
    <array>
    <string>osascript /Users/admin/growltime.scpt</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>StartOnMount</key>
    <true/>
    <key>WatchPaths</key>
    <array>
    <string>/Users/admin/Library/Desktop/</string>
    </array>
</dict>
</plist>

Теперь странно то, что growltime.scpt запускается ТОЛЬКО при подключении диска или монтирования установочного файла (<StartOnMount>), но НЕ когда файл или папка были вставлены / отредактированы или удалены на рабочем столе (<WatchPaths>).

Что я здесь не так делаю?

1 ответ1

2

Прежде всего, это не должно работать вообще, если каждое слово в ProgramArguments не является отдельной строкой. Вместо этого

<key>ProgramArguments</key>
<array>
<string>osascript /Users/admin/growltime.scpt</string>
</array>

так должно быть

<key>ProgramArguments</key>
<array>
        <string>osascript</string>
        <string>/Users/admin/growltime.scpt</string>
</array>

Возможно, у вас была загружена более старая версия агента, когда вы ее тестировали? Списки свойств могут быть перезагружены с помощью launchctl unload ~/Library/LaunchAgents/$id.plist && launchctl load ~/Library/LaunchAgents/$id.plist .

У вас также была ошибка в пути к рабочему столу:

<key>WatchPaths</key>
<array>
<string>/Users/admin/Library/Desktop/</string>
</array>

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .