【问题标题】:How to split a real-time stdout stream into several files?如何将实时标准输出流拆分为多个文件?
【发布时间】:2019-04-18 13:19:12
【问题描述】:

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

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

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

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

我在谷歌/堆栈溢出中进行了搜索(例如 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】:

    试试这个:

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

    【讨论】:

    • 它不起作用。没有任何输出。仅供参考,此代码也不输出任何内容:python3 ./genstream.py |而读线;做 echo "$line" 完成
    猜你喜欢
    • 1970-01-01
    • 2014-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-04
    • 2021-12-22
    相关资源
    最近更新 更多