Как очистить вывод, добавленный к файлу с помощью функции / цикла bash в режиме реального времени?

Моя проблема в том, что у меня есть функция, вызывающая это function1 который работает бесконечно. Сама функция эха hello каждую секунду. Используя команду:

function1 >> temp.txt

Каждую секунду, если я хочу просмотреть файл temp.txt Я должен увидеть новую строку с hello, Однако происходит то, что функция не записывает в файл, пока не завершит работу. Поэтому, если я хочу убить функцию, ничего не будет написано. Кто-нибудь знает, что я могу сделать в этой ситуации, что в основном будет динамически обновляться temp.txt?

У меня есть скрипт Python, настроенный следующим образом:

while [1>0]:
   print "hello"
   time.sleep(1)

Поэтому это всегда будет работать. Теперь я называю это в скрипте bash

python pythonscript.py >> temp.txt

Если я kill процесс данные не регистрируются.

1 ответ

Решение

Bash не буферизуется, но python будет буферизироваться, если вывод не идет на терминал (потому что он более эффективен), поэтому вы захотите сбрасывать stdout после каждой строки.

#!/usr/bin/env python
import sys
import time
while True:
    print "hello"
    sys.stdout.flush()
    time.sleep(1)
Другие вопросы по тегам