我正在尝试通过读取块内部的nc向statsd发送一个小字符串:
while read line; do printf "folder.counter:value|1c" | nc -q 0 -u $host $port done
不幸的是,当处于UDP模式时,nc似乎想要无限期地等待,即使我已经指定了-q 0,该手册页所说的将使程序在EOF之后立即退出.
我试过传递-w 1,但是如果我发送的数据每秒输入的行数超过一行,那么数据就会缓慢增加,我会失去实时统计数据(更不用说冒着某种缓冲区溢出的风险) ).
是否有可能做我正在尝试用netcat做的事情,或者我是否需要用具有statsd库的语言编写一些东西?
我最终通过切换到socat修复了这个问题:
while read line; do printf "folder.counter:value|1c" | socat -t 0 - UDP:$host:$port done