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