Dou*_* Su 13 python bash redirect background-process
我想在一个bash会话中同时运行几个python脚本,并分别实时检查它们的输出.为了完成这个任务,我写了一个简单的bash脚本,如下所示:
#!/bin/bash
python 1.py > 1.output &
python 2.py > 2.output &
python 3.py > 3.output &
Run Code Online (Sandbox Code Playgroud)
但是,当我使用cat 1.output
命令检查在执行过程中打印的内容时,看不到任何内容.
经过一段时间的思考,我意识到1.output
必须在1.py
完成执行时填写.换句话说,我在这里使用的方法不是real time
时尚.
您可能会建议等待这些python脚本完成.不幸的是,事实上所有python脚本实际上都是长期运行的程序,它们可能在几天或几个月后完成,这就是我想要实时检查它们的输出的原因.
此外,您可能建议我修改python脚本以直接将消息打印到文件而不是stdout
.对不起,这里的脚本太复杂了,无法修改,其中有很多print
功能.
我现在能做什么?
Rob*_*obᵩ 32
该-u
开关和等效PYTHONUNBUFFERED
环境变量的力量标准输出进行缓冲.试试这个:
#!/bin/bash
python -u 1.py > 1.output &
python -u 2.py > 2.output &
python -u 3.py > 3.output &
Run Code Online (Sandbox Code Playgroud)
要么
#!/bin/bash
export PYTHONUNBUFFERED=yes
python 1.py > 1.output &
python 2.py > 2.output &
python 3.py > 3.output &
Run Code Online (Sandbox Code Playgroud)
请注意,-u
有副作用:阅读文档以了解更多信息.
参考:
归档时间: |
|
查看次数: |
11876 次 |
最近记录: |