Bash: Выполнитесь сценарий на файле сохраняют?

Я хотел бы использовать Bash для выполнения набора тестов автоматически, когда я сохранил любой файл в данном каталоге.

Существует ли механизм для удара для выполнения данного сценария на событиях сохранения?

Спасибо.

::Править::

Я должен был упомянуть, что нахожусь на использовании OSX.

5
задан Thomas 19 July 2010 в 17:31
поделиться

3 ответа

Отредактировано: вы (OP) упомянули, что используете OSX. Мне не известно о каких-либо подобных инструментах в OSX. Существует низкоуровневый системный вызов (унаследованный от BSD) под названием « kqueue », но вам придется реализовать свой собственный инструмент пользовательского уровня. Существует образец приложения от Apple под названием « Watcher », но это всего лишь доказательство концепции и не делает того, что вы хотите.

Есть другой поток об этом на Stack Overflow (также безрезультатно).

Из-за отсутствия подходящего инструмента, если вы используете определенный язык программирования, я бы посоветовал вам поискать решения, уже написанные для него. В противном случае, я думаю, вам придется самостоятельно опрашивать и управлять изменениями ...

Вот мой исходный ответ, основанный на Linux, для архивных целей:

Если вы используете Linux, вы можете воспользоваться посмотрите inotify . В частности, вы можете установить inotify-tools , которые включают inotifywait .

С его помощью вы можете отслеживать файлы и каталоги на предмет ряда событий, таких как доступ, изменение, открытие, закрытие и многие другие. inotifywait может завершиться после обнаружения указанного события, поэтому простой цикл даст вам то, что вы хотите:

while :; do
    inotifywait -e modify /some/directory
    run_test_suite
done

Между прочим, многие языки программирования и среды уже имеют свои собственные средства выполнения непрерывного тестирования (для Например, с Python вы можете использовать, среди прочего, tdaemon ).

5
ответ дан 14 December 2019 в 18:54
поделиться

Вы можете использовать incron , чтобы определить, когда файл был закрыт.

0
ответ дан 14 December 2019 в 18:54
поделиться

Используйте dnotify, только если inotify недоступен в вашей системе (ядро linux <2.6.13).

dnotify - стандартный метод Linux для просмотра каталогов:

http://en.wikipedia.org/wiki/Dnotify

Пример кода. Следите за изменениями в каталоге:


dnotify WATCH_DIR -M -e SCRIPT_TO_EXECUTE

Обратите внимание: SCRIPT_TO_EXECUTE будет выполняться каждый раз при изменении любого файла в WATCH_DIR.

0
ответ дан 14 December 2019 в 18:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: