文字列コマンドの奇妙な動作

文字列コマンドの奇妙な動作

mysqlトラフィックをキャプチャし、このトラフィックを次のようにstringsコマンドに転送しようとしています。

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

誰かが上記のコマンドの動作と出力をファイルにリダイレクトしない理由を説明してください。

ベストアンサー1

私は解決を得た:

実際、stringsコマンドはバッファリングされます。以下を使用してバッファリングを無効にしました。

stdbuf -i0 -o0 -e0 command

したがって、コマンド全体を次のように変更すると、出力は/ tmp / finalファイルに移動し始めます。

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

引用する

おすすめ記事