Faça a saída sem buffer . Uma maneira simples de fazer isso com o Python é definir PYTHONUNBUFFERED :
PYTHONUNBUFFERED=1 python program.py 2>log.txt
Estou tentando redirecionar a saída de determinado programa com threads para determinado arquivo.
Eu tentei executar command > file 2&>1 , mas se command não parou de ser executado, file ainda estará vazio.
Existe alguma maneira de despejar de forma assíncrona a saída para file ?
Exemplo de fragmento de python:
import _thread
def run():
raise ValueError('plah')
_thread.start_new_thread(run, ())
while True:
pass
A execução de python program.py 2> log.txt não produz uma saída em log.txt até que o programa seja interrompido manualmente.
Buffers do Python são exibidos por padrão. Dê o -u flag, ou coloque PYTHONUNBUFFERED=yes para evitar isso.
Tags bash io-redirection