Как очистить вывод, добавленный к файлу с помощью функции / цикла 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)