Запускать .sh при каждом изменении файла.

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

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

Поскольку мы не меняем файлы много (команда из 2 или 3 работает над несколькими файлами), есть способ вызвать скрипт каждый раз, когда файл будет изменен?

Рабочий процесс: программатор сохраняет файл >> Файл обновления Windows в папке ERP >> Экземпляр Linux, у которого установлена ​​папка Windows, получает обновление >> Linux выполняет .sh, который перезапускает сервер.

Я думаю, что лучший способ – использовать inotifywait из пакета «inotify-tools».

Для примера см. Лучший ответ в https://superuser.com/questions/181517/how-to-execute-a-command-whenever-a-file-changes

Вы можете использовать инструмент entr , например

 $ ls -d * | entr sh -c 'make && make test' 

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

 #!/bin/bash function init { LIST=`pgrep python` IFS=' ' read -a arr <<< "${LIST}" for pid in "${arr[@]}" do echo $pid `kill -9 $pid` done } init IN=`python server.py`& CONTENT=`cat server.py` while : do sleep 1 CURR=`cat server.py` if [ "$CONTENT" != "$CURR" ]; then init IN=`python server.py`& CONTENT=`cat server.py` echo "Restarted." fi; done 

Скрипт работает как демон, когда файл изменен, он просто перезапускает сервер.

Возможно, это не лучшее решение, но оно работает.