tcpdump は、停電時にパケットをファイルに保存しません。

tcpdump は、停電時にパケットをファイルに保存しません。

私はネットワークに接続できるpiデバイスを開発しており、自動的にパケットを回転したファイルにキャプチャし始めます。このデバイスの基本的なアイデアは、私のクライアントの1つがエンドポイントに非常に不安定な問題がある場合は、デバイスをミラーリングされたポートに接続し、問題が発生するまで実行状態を維持できることです。問題が発生した場合は、パイを分離して転送できます。分析のためにもう一度連絡してください。

私が経験している問題は、追跡中のpcapファイルを表示するためにPiを再起動すると、すべてのパケットサイズがゼロとして表示されることです。

これを行うには、次のコマンドを使用しています。

tcpdump -i eth0 -U -W 10 -C 500 -w /opt/tcpdump/packetcapture-$(date +%Y%m%d.%H:%M:%S).pcap

実際に小さなtcpdumpサービスを実行すると、ファイルに書き込むようです。

-rw-r--r-- 1 root root 104439843 24 Nov  9 11:42 packetcapture-20211109.11:42:41.pcap0

ただし、デバイスを取り外して再起動すると、次のようになります。

-rw-r--r-- 1 root root 24 Nov  9 11:42 packetcapture-20211109.11:42:41.pcap0

なぜですか?ディスクに書き込むようで、再起動する前にサービスを終了すると、ファイルにデータが含まれます。

ここでもう少し根本的な誤りをしているのでしょうか?

ベストアンサー1

lsコンピュータのプラグを抜く前にコマンドを入力すると、メモリキャッシュからデータが取得されます。ほとんどのプログラムはキャッシュを介してファイルに書き込み、書き込みシステム呼び出しが返された後は実際にはディスクに何も書きません。これはシステムをより効率的にする。

メールサーバー、データベースなどの機密プログラムは、確認メッセージを送信したり、作業を続行する前にファイルをディスクに同期することを明示的に要求するfsyncシステムコールを使用します。

syncキャッシュ内のすべてのデータをディスクにフラッシュし、後で再フラッシュするコマンドがあります。もう一度やり直して、このコマンドが終了するまでコンピュータを取り外さないでください。

おすすめ記事