Как сделать выходное перенаправление оболочки (>), пишут, в то время как сценарий все еще работает?

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

python script.py > ~/public_html/results.txt

Однако результаты не обнаруживаются сразу, когда я обновляю адрес. Результаты обнаруживаются, когда я завершаю программу, но поскольку я сказал, она не останавливается отдельно. То перенаправление (>) быть ленивым с с записью? Существует ли путь к непрерывно (или с интервалом) обновляют результаты в файле?

Или действительно ли это - веб-сервер, который не обновляет файл, в то время как это все еще пишется?

10
задан unutbu 2 May 2010 в 12:02
поделиться

3 ответа

Вам нужно очистить вывод sys.stdout.flush () (или что-то еще), если вы хотите увидеть его немедленно. См. этот

15
ответ дан 3 December 2019 в 17:19
поделиться

stdout буферизируется, если не подключен к терминалу.

Вы можете изменить эту политику на буферизацию строк с помощью stdbuf

stdbuf -oL python script.py > ~/public_html/results.txt

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

7
ответ дан 3 December 2019 в 17:19
поделиться

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

Я бы сначала попробовал принудительную перезагрузку (Ctrl + F5 или Ctrl + Shift + R или Shift + ) и посмотрел, поможет ли это. Если нет, то вы можете попробовать что-нибудь еще.

В отдельной оболочке на сервере do

tail -f ~/public_html/results.txt

Tail распечатывает последние n строк файла (где n по умолчанию равно 10), но параметр -f отслеживает файл и продолжает сообщать вывод по мере роста файла. . Это, по крайней мере, даст вам уверенность в том, что файл записывается постепенно.

Надеюсь, это поможет.

1
ответ дан 3 December 2019 в 17:19
поделиться
Другие вопросы по тегам:

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