Alex Rivera | Logout

How to make shell output redirect (>) write while script is still running?

Asked 2010-05-02T11:50:45.080
10

I wrote a short script that never terminates. This script continuously generates output that I have to check on every now and then. I'm running it on a lab computer through SSH, and redirecting the output to a file in my public_html folder on that machine.

python script.py > ~/public_html/results.txt

However, the results don't show up immediately when I refresh the address. The results show up when I terminate the program, but as I said, it doesn't halt by itself. Is that redirect (>) being lazy with with writing? Is there a way to continuously (or with an interval) update the results in the file?

Or is it the webserver that doesn't update the file while it is still being written?

Edit
Report

1 Answer

7

stdout is buffered, if not connected to terminal.

You can change this policy to line-buffering via stdbuf

stdbuf -oL python script.py > ~/public_html/results.txt

So you don't have to flush in your Python script and keep it IO efficient, if line-buffering is not required.

answered 2010-05-02T12:40:00.640

Your Answer