フォルダを聞いて変更すると受信ファイルを修正

フォルダを聞いて変更すると受信ファイルを修正

pcapファイルをjsonファイルに変換するためにシェルスクリプト(およびtshark)を使用したいと思います。新しいpcapファイルがフォルダにコピーされたら、tsharkコマンドを実行し、結果のjsonデータを別のファイルに別の順序で保存する必要があります。変換が完了したら、pacapファイルをすぐに削除する必要があります。

アイデアは次のとおりです。

while(true){
   wait_for_IN_folder_changed
   tshark -T ek -x -r \in\in.pcap > \out\out.json
   rm \in\in.pcap
}

並列性とスループットを向上させるには、マルチスレッド方式でtsharkプロセスを開始するのが最善です。しかし、異なるスレッドが互いに干渉する可能性がありますか?

ベストアンサー1

あなたは以下を探しているかもしれません:https://www.gnu.org/software/parallel/man.html#例: -GNU-Parallel-as-dir-processor

例: dir ハンドラとしての GNU Parallel

ユーザーが処理を必要とするファイルを置くことができるディレクトリがある場合は、GNU / Linuxでこれを行うことができます(他のプラットフォームでinotifywaitを呼び出すことがわかっている場合はバグレポートを送信してください)。

inotifywait -qmre MOVED_TO -e CLOSE_WRITE --format %w%f my_dir |\
  parallel -u echo

これにより、my_dirまたはmy_dirのサブディレクトリにあるすべてのファイルに対してechoコマンドが実行されます。

もちろん、-Sを使用してリモートシステムにジョブを配布できます。

inotifywait -qmre MOVED_TO -e CLOSE_WRITE --format %w%f my_dir |\
  parallel -S ..  -u echo

処理するファイルがtarファイルにある場合は、最初にすべてのファイルを解凍するのではなく、1つのファイルを解凍してすぐに処理する方が高速です。上記のようにdirハンドラを設定し、dirに抽出します。

GNU Parallelをdirプロセッサとして使用することは、GNU Parallelをキューシステム/バッチマネージャとして使用するのと同じ制限があります。

おすすめ記事