我有一个crontab作业调用python脚本并输出到文件:
python run.py &> current_date.log
Run Code Online (Sandbox Code Playgroud)
现在有时当我这样做
tail -f current_date.log
Run Code Online (Sandbox Code Playgroud)
我看到文件填满了输出,但有时日志文件存在,但长时间保持空白.我敢肯定,python脚本正在打印东东吧它开始运行后,日志文件被创建.任何想法为什么它在某些时候保持空虚?
mob*_*mob 13
Python在检测到它没有写入tty时缓冲输出,因此您的日志文件可能不会立即收到任何输出.您可以将脚本配置为刷新输出,或者可以使用-u参数调用python 以获取无缓冲输出.
$ python -h
...
-u : unbuffered binary stdout and stderr (also PYTHONUNBUFFERED=x)
see man page for details on internal buffering relating to '-u'
...
Run Code Online (Sandbox Code Playgroud)
问题实际上是Python(不是bash)并且是设计的.Python默认情况下缓冲输出.运行python -u以防止缓冲.
另一个建议是创建一个flush()在写入日志文件后立即调用的类(或特殊函数).
| 归档时间: |
|
| 查看次数: |
2231 次 |
| 最近记录: |