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