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

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

У меня есть скрипт Python, который автоматически завершается после X запусков, в начале программы он устанавливает значениеперезапуск.txtна 0, используя этот код.

restart = open("restart.txt", "w")
restart.write("0")
restart.close()

Затем в конце программы файл сбрасывается на 1, чтобы можно было перезапустить его inotify, например, так.

restart = open("restart.txt", "w")
restart.write("1")
restart.close()
exit //closes program

Мне нужен inotifyсценарий или что-то в этом роде, когда значениеперезапуск.txtизменится на 1, чтобы снова открыть программу, перезапустите.

Как бы я это сделал с помощью inotifyсценария или чего-то подобного?

решение1

Следующий фрагмент кода bash можно поместить в исполняемый скрипт bash:

     FORMAT=$(echo -e "\033[1;33m%w%f\033[0m written")
     while /usr/bin/inotifywait -qe close_write --format "$FORMAT" restart.txt
     do
             [ $(cat restart.txt) -eq 1] && /path/to/program/to/be/executed || echo "nothing to do"
     done

Вызов inotifywait отслеживает файл restart.txt вдрежим uiet (т.е. подавление некоторого вывода) для события () которыйзакройте файл после того, как открыли его для записи. Однако,inotifyожидатьневозможно определить, была ли действительно произведена запись в файл, поэтому следующая строка реализует проверку: если restart.txt содержит 1, то выполнить какой-либо файл, но если все еще содержит , 0то ничего не делать.

Связанный контент