如何将实时标准输出流拆分为多个文件?



我有一个python脚本,它不断地将文本流写入stdout。 像这样的东西(genstream.py):

while 1:
print (int(time.time()))
time.sleep(1)

我想要一个启动python脚本的bash脚本,将其输出保存到一组文件中,假设每小时拆分一次输出,以避免创建难以管理的巨大文件。

然后,由相同的 bash 脚本处理如此创建的文件(即每小时结束时处理一个),以将值插入数据库并移动到存档文件夹。

我在google/stack溢出中进行了搜索(例如,将STDIN拆分为多个文件(并在可能的情况下压缩它们)实时或 https://unix.stackexchange.com/questions/26175/地阅读STDOUT流),但到目前为止我没有找到任何解决方案。

我也尝试使用这样简单的东西(所以不考虑时间,只考虑行数)

python3 ./genstream.py | split -l5 -

但我没有输出。

我已经尝试了(命名)管道和三通的组合,但似乎没有任何效果。

试试这个:

python3 ./genstream.py | while read line; do
echo "$line" >> split_$(date +%Y-%m-%d-%H)
done

最新更新