LINUX.ORG.RU

перезапуск скрипта после сохранения

 ,


1

2

Подскажите пожалуйста, на что в скрипте ниже можно заменить sleep 3; или вообще как весь скрипт переписать с тем, чтобы он перезапускал test.py при изменении у него времени сохранения?
То есть в окне редактора я его правлю, сохраняю, и в соседнем окне с терминалом он сразу перезагружается.

 $ while true; do ./test.py; sleep 3; done;


нужно именно элегантное решение в одну строку для удобства копипасты.

Ответ на: комментарий от hikikomori

Почему нельзя? Ведь работает.

что нельзя?

а что, если в твоём скрипте будет бесконечный цикл? или там сервер какой надумаешь делать? как тогда свой скрипт перезапускать будешь? попробуй на простом примере:

from time import sleep
white True:
    print('endless poop')
    sleep(1)

В случае с (теперь работает и в баше)

while true; do inotifywait -qqe close_write test.py; pkill -f 'python test.py'; echo -e '\n***\n'; { python test.py& }; done
достаточно просто пересохранить файл и скрипт запустится по новой.

теперь переведу ответ со stackoverflow про то, как сделать запуск скрипта по кнопке. 1) открой «управление внешними инструментами» (Manage External Tools), 2) добавь инструмент, 3) назови его, 4) впиши вот это:

#!/bin/sh
python $GEDIT_DOCUMENTS_PATH
# вариация: python3 "$GEDIT_CURRENT_DOCUMENT_PATH"
5) назначь клавишу, например F5, нажав её прямо в соответствующем поле ввода.

ещё пара ссылок, которые помогут сориентироваться: одна, вторая.

anonymous
()
Ответ на: комментарий от anonymous

Спасибо, буду пробовать. Правда где в gedit «управление внешними инструментами» я не нашёл. Вероятно нужно пойти глянуть на stackoverflow.

hikikomori ★★★
() автор топика
22 января 2017 г.
Ответ на: комментарий от anonymous

Заметил странный глюк. Поначалу убил мозг, пытаясь понять почему так.

Запускаю:

while true; do inotifywait -qqe close_write test.py; pkill -f 'python3 test.py'; echo -e '\n***\n'; { python3 test.py& }; done


Но если в скрипте встречается input() то он становится бесконечным, пока не нажмешь ^c

А запуск непосредственно в gedit по F5 выдаёт ошибку EOFError: EOF when reading a line

Видимо input() не умеет обрабатывать.

hikikomori ★★★
() автор топика
Последнее исправление: hikikomori (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.