Shell

字元串命令的奇怪行為

  • July 25, 2013

我正在嘗試擷取 mysql 流量並將這些流量傳遞給字元串命令,如下所示:

tcpdump -i any -s 0 -l -w - dst port 3306 | strings

這按預期工作並列印所有mysql查詢

select * from mytables
show databases

但是當我試圖將輸出重定向到文件時,它不會將輸出列印到/tmp/out文件:

tcpdump -i any -s 0 -l -w - dst port 3306 | strings > /tmp/out

有人可以解釋一下上述命令的行為以及為什麼它沒有將輸出重定向到文件。

我得到了解決方案:

實際上字元串命令正在緩衝。我通過使用禁用了緩衝

stdbuf -i0 -o0 -e0 command

因此,在將整個命令更改為以下內容後,輸出開始轉到 /tmp/final 文件。

tcpdump -i any -s 0 -l -w - dst port 3306 | stdbuf -i0 -o0 -e0 strings > /tmp/final 

參考

引用自:https://unix.stackexchange.com/questions/84388