Zrobiłem skrypt w Pythonie, który komunikuje się z serwerem WWW za pomocą nieskończonej pętli. Chcę rejestrować wszystkie dane komunikacyjne do pliku, a także monitorować je z terminala w tym samym czasie. więc użyłem polecenia tee w ten sposób.
python client.py | tee logfile
jednak nie mam nic z terminala ani pliku dziennika. skrypt Pythona działa dobrze. co tu się dzieje? brakuje mi czegoś
niektóre rady byłyby mile widziane. z góry dziękuję.
sys.stdout.flush()
ze swojego skryptu za każdym razem, gdy logujesz linię.Odpowiedzi:
Od
man python
:Możesz więc:
Lub używając
tee
:źródło
script
, które również wyłącza buforowanie i dodatkowo powoduje działanie sekwencji sterujących (C-a
, klawiszy kursora itp.): Stackoverflow.com/a/39269661/15690 .tee
jest postrzegany jako potok (którym jest), a nie hybryda: pisze do konsoli. Uwaga: zachowanie można również kontrolować w programie w języku Python.python -u client.py | tee >> logfile
nie zadziała.>>
Wprowadzi kolejny przypadek buforowanej piśmie do pliku. To właśnietee -a
rozwiązuje.