5

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

Эта задача, очевидно, утомительна, и я ищу какой-нибудь сценарий для ее решения (я на OSX).

Есть ли способ автоматического запуска сценария оболочки при изменении содержимого данного каталога (+ подкаталоги)?

4 ответа4

5

Mac OSX имеет два API-интерфейса уведомлений файловой системы: kqueue и FSEvents. Я не знаю о командах, которые дают вам доступ к ним без программирования. Для FSEvents есть привязка к Python.

См. Также Просмотр доступа к файловой системе в реальном времени на Mac OS X

Учитывая то, что вы пытаетесь сделать, вы можете попробовать другой подход: вместо того, чтобы инициировать перекомпиляцию, когда исходные файлы были изменены, инициировать перекомпиляцию при запросе скомпилированных файлов (используя make , чтобы ничего не перекомпилировалось на самом деле). если исходные файлы не изменились). Это может быть слишком дорого, если вам придется делать это для каждого запроса к веб-сайту; эталон, чтобы узнать.

1

Guard - это кроссплатформенный надежный инструмент для просмотра каталогов (не только файлов) и запуска команд при добавлении, изменении или удалении файлов.

Он решает массу проблем, связанных с просмотром файлов, как OSX-специфичных, так и общих проблем просмотра файлов / каталогов.

Он также прост в настройке и запуске и использует библиотеку Listen для просмотра файлов.

1

Команда BSD wait_on, основанная на kqueie, доступна в MacPorts, она предоставляет именно то, что вам нужно.

Команда wait_on позволяет сценариям оболочки получать доступ к средствам, предоставляемым kqueue(3). Это позволяет сценариям обнаруживать файлы, добавляемые в каталоги, данные, добавляемые в файлы, и многое другое - и все это без опроса.

В Linux я бы использовал incron, INotify Cron.

0

Не совсем, но вы можете подобраться ближе. Вы можете написать сценарий, который проверяет, изменились ли файлы в каталоге (возможно, путем проверки их в каком-либо файле), и, если да, создайте их.

Затем вы можете настроить cron на запуск этого скрипта каждые 10 минут, чтобы вы знали, что вашим материалам не более 10 минут.

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