Shell
nc (netcat) 在 UDP 模式下掛起,等待更多數據。
我正在嘗試通過讀取塊內的 nc 向 statsd 發送一個小字元串:
while read line; do printf "folder.counter:value|1c" | nc -q 0 -u $host $port done
不幸的是,在 UDP 模式下, nc 似乎想無限期地等待,即使我已經指定
-q 0
了 ,手冊頁說這將使程序在 EOF 之後立即退出。我試過 pass
-w 1
,但如果我發送的數據每秒超過一行,數據緩冲起來,我會失去我的實時統計資訊(更不用說冒著某種緩衝區溢出的風險)。是否可以用 netcat 做我想做的事情,還是我需要用具有 statsd 庫的語言編寫一些東西?
我最終通過切換到解決問題
socat
:while read line; do printf "folder.counter:value|1c" | socat -t 0 - UDP:$host:$port done
您可以將 0 指定為 -w 的超時值,因此它根本不會等待。