Shell
字元串命令的奇怪行為
我正在嘗試擷取 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
參考