запустіть скрипт для модифікації каталогу


0

Бо launchdіснує WatchPaths(і для якогось більш конкретного випадку QueueDirectories), який відстежує зміни на шляху. Однак якщо це каталог, він розпізнає лише створення / видалення в каталозі, тобто не змінений вміст файлів, що містять файли, або будь-які зміни в будь-яких підкаталогах (див. Тут ).

(Для Linux, здається, тут перераховано кілька хороших рішень .)

Здається launchd, не в змозі це зробити, чи не так?

Я міг би написати власний постійно працюючий демон, який розширюється launchdцією функціональністю, через FSEvents (або kqueue, fam чи gamin ?).

Або існують проекти / інструменти, які можуть це зробити?

Відповіді:


0

launchdтакож слід слідкувати за змінами у файлах (безпосередньо) під каталогами в WatchPaths.

Спробуйте зберегти цей плейст як ~/Library/LaunchAgents/test.plist:

<?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>test</string>
  <key>ProgramArguments</key>
  <array>
    <string>say</string>
    <string>a</string>
  </array>
  <key>WatchPaths</key>
  <array>
    <string>~/Documents/</string>
  </array>
</dict>
</plist>

Потім запустіть launchctl load ~/Library/LaunchAgents/test.plistі змініть деякий файл під ~/Documents/. Програму слід запускати, навіть якщо ви змінюєте файл, не виконуючи атомне збереження або навіть якщо час модифікації ~/Documents/не змінено.

Зауважте, що launchdне слідкує за змінами в підкаталогах переглянутих каталогів. Розширення Tilde працює в аргументах WatchPathsза замовчуванням, але немає можливості включити розширення імені файлів. ( EnableGlobbingстосується лише ProgramArguments.)


За моїм посиланням, це не так. Але навіть якщо це і є, це все ще не корисно для мене, тому що я хочу рішення, яке відстежує весь вміст, тобто також підкаталоги.
Альберт
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.