【发布时间】:2020-01-25 11:11:58
【问题描述】:
我的命名管道获取数据非常缓慢但无休止,我想在它们到达时将命名管道的内容复制到日期格式的文件。
我有这样的事情
do
cat /tmp/big_file > `printf '%(%Y/%m/%d)T' -1`.output &
sleep 3590
kill $!
sleep 10
done
直接杀死cat 是否安全?或者我会在它的缓冲区中丢失一些数据吗?我如何告诉猫该停下来了?
【问题讨论】:
-
最好使用
while read循环而不是cat。 -
我实际上正在发送到 aws s3,一个 Web 端点,所以我想保持标准输入或 aws cli 保持打开状态,以便我可以继续写信给它。如果它是一个文件,我可以逐行读取
-
您无需关闭标准输入即可使用
while read方法。 -
关闭管道的另一端;这将导致
cat在完成读取数据后退出。 -
您可能想研究
logrotate之类的东西,而不是自己实现它。
标签: bash