2010-07-19 2 views
5

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

Есть ли механизм для bash для выполнения заданного сценария для сохранения событий?

Спасибо.

:: EDIT ::

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

ответ

5

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

Существует об этом another thread об переполнении стека (также неубедительно).

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

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

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

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

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

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

0

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

0

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

dnotify является стандартным методом Linux смотреть каталоги:

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

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


dnotify WATCH_DIR -M -e SCRIPT_TO_EXECUTE 

Пожалуйста, обратите внимание, SCRIPT_TO_EXECUTE будет выполняться каждый раз, когда какой-либо файл в изменениях WATCH_DIR.

+2

См [это] FAQ (http://inotify.aiken.cz/?section=inotify&page=faq&lang=en) (четвертый вопрос и страница это ссылки на) , –

+0

dnotify выглядит отлично, за исключением того, что я нахожусь на Mac.Извините, я должен был упомянуть об этом в своем посте. – Thomas

+0

Я должен второй, на что указал Деннис: не используйте dnotify, вместо этого используйте inotify. – rbp

Смежные вопросы