我正在运行一个脚本,如下所示
sudo hexdump -v -e '1/1 "%02x\n"' /dev/ttyUSB0 | Many Pipes | gawk '{ print strftime(":: %s"), $0 }'在这里,数据是用时间戳转储的,下面给出了它,
:: 1461680718 ::ED.DATA
:: 1461680718 ::ED.DATA
:: 1461680718 ::ED.DATA
:: 1461680718 ::ED.DATA
:: 1461680718 ::ED.DATA
:: 1461680718 ::ED.DATA
:: 1461680719 ::ED.DATA正如您所看到的,对于所有数据包,时间并没有改变。我认为这是因为我在转储数据,而不是读行。有没有办法为每个包编写脚本并确保得到不同的值(以秒为单位)
发布于 2016-04-26 14:34:00
同样的时间来自缓冲。尝试查找队列中缓冲的命令,并尝试命令unbuffer。
发布于 2016-04-27 15:42:41
我在jessie上尝试了下面的操作,并且在stdbuf -oL前面按预期工作没有问题。
while sleep .5;do echo -n x;done |
stdbuf -oL hexdump -v -e '1/1 "%02x\n"' |
ts %.s |
catwhile模拟慢输入,ts时间戳每一行,cat只是提供另一个管道。输出是规则的,时间戳在前2行之后大约是.5秒。ts命令来自moreutils包。
尝试在管道中的每个命令上使用stdbuf -oL。
https://unix.stackexchange.com/questions/279203
复制相似问题