linux - How does/frequent unix tee command write stdout terminal output to file? if the output is too big -


i redirecting tool stdout tee command current progress can seen on terminal in log file

here code snippet running tool , stdout fed tee command , code snippet written tcl script.

$(eh_submit) $(icc_exec) $(options) -f ./scripts/$@.tcl | tee -i ./logs/$@.log 

i can see current real time progress on terminal same observation not seen in log file! , writes stdout log file chunk chunk

how tee work? write blocks or time or both? if block minimum block size? if time minimum duration?

i need parse real time log entries data analytics(as read log file via tail -f , push new data log file grows).

unless programs handle buffering on own, buffering of io streams handled in libc. standard behaviour is: buffer output line wise if goes terminal, buffer output block wise if goes non-terminal, meaning file or pipe. that's why output appears in log file described it: chunk chunk. behaviour performance optimization.

on linux stdbuf command can used run program adjusted buffers. need run program this:

stdbuf -ol your_program >> your.log & tail -f your.log 

-ol means buffer stdout linewise.


Comments

Popular posts from this blog

ruby - Trying to change last to "x"s to 23 -

jquery - Clone last and append item to closest class -

c - Unrecognised emulation mode: elf_i386 on MinGW32 -