Как автоматизировать процесс выполнения команды при создании файла

Как автоматизировать процесс выполнения команды после создания файла . У меня есть приложение, в котором инструмент генерирует схему xsd из файла XML. Мой следующий модуль использует эту схему xsd для дальнейшей обработки.
Я хочу автоматизировать этот процесс, то есть запустить команду после создания файла. Это приложение будет работать каждый день на машине с Ubuntu, поэтому я хочу его автоматизировать. Я не хочу никакого вмешательства человека в этот процесс. Я выполнил поиск inotify lib, который используется для аналогичных целей, но заставляет меня изменить дизайн моей системы.
Есть ли другие альтернативы, которые могли бы решить эту задачу? Любая помощь высоко ценится.

2
задан 30 April 2014 в 10:16

2 ответа

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

#!/bin/sh
program-that-creates-xsd
program-that-does-further-processing

действительно нет никаких хороших решений, если Вы не можете структурировать свою программу как это. Даже с inotify, почти невозможно сказать, когда XSD действительно закончен.

0
ответ дан 30 April 2014 в 10:16

Обнаружение создания файла в определенной папке может быть сделано через inotifywait, который является частью inotify-tools пакет, устанавливаемый через sudo apt-get install inotify-tools.

Как пример, мы можем установить непрерывные часы (-m флаг) на каталоге Desktop и проанализировать вывод для созданных записей каталога, однако определив, является ли файл регулярным файлом, и имя файла является тем, в котором мы нуждаемся, должен быть сделан вручную:

inotifywait -m --format "%f" -e create ./Desktop/  | 
while read -r fname; do 
    [ -f ./Desktop/"$fname" ] && [ "$fname" = "specific.csv" ] && echo "We got 'em!" 
done

Поэтому в случае, если кто-то делает каталог specific.csv, который должен быть отклонен, но если specific.csv создается, мы выполнимся echo часть, которая могла бы быть заменена другими командами или функциями оболочки. При необходимости в неблокирующемся выполнении Вы могли бы полагать, что добавление setsid запустило команду на новой сессии и позволило сценарию продолжить смотреть.

0
ответ дан 18 April 2019 в 22:40
  • 1
    Спасибо за помощь. Теперь я сталкиваюсь со следующей проблемой: – GTR 3 November 2015 в 21:56

Другие вопросы по тегам:

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