Nohup is not writing log to output file
I am using the following command to run a python script in the background:
nohup ./cmd.py > cmd.log &
But it appears that nohup is not writing anything to the log file. cmd.log is created but is always empty. In the python script, I am using sys.stdout.write
instead of print
to print to standard output. Am I doing anything wrong?
You can run Python with the -u
flag to avoid output buffering:
nohup python -u ./cmd.py > cmd.log &
It looks like you need to flush stdout periodically (e.g. sys.stdout.flush()
). In my testing Python doesn't automatically do this even with print
until the program exits.