如何将实时stdout流拆分成几个文件?

问题描述 投票:0回答:1

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

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

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

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

我在google / stack overflow(例如split STDIN to multiple files (and compress them if possible) Bash reading STDOUT stream in real-timehttps://unix.stackexchange.com/questions/26175/)中进行了搜索,但到目前为止我找不到任何解决方案。

我也尝试过像这样简单的东西(所以不考虑时间而只考虑行数)

python3 ./genstream.py | split -l5 -

但我没有输出。

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

bash file redirect split stdout
1个回答
0
投票

试试这个:

python3 ./genstream.py | while read line; do
  echo "$line" >> split_$(date +%Y-%m-%d-%H)
done
© www.soinside.com 2019 - 2024. All rights reserved.