ファイルの変数を更新する最も効率的な方法は何ですか?

ファイルの変数を更新する最も効率的な方法は何ですか?

短い質問:ファイル内の単一番号変数を更新する最も効率的な方法は何ですか?

長い質問:私はさまざまな理由でどのホストがLinuxファイアウォールに追加されたかを記録するセキュリティプログラム(fail2ban)の出力を見ています。 Fail2banを使用すると、違反者が検出されたときにカスタム操作を実行でき、[1]ファイル内の変数を単純に増やすことを計画しました。このファイルは、後でファイルにアクセスする他のサーバーでまだ未知の時間間隔で数字を表示するために使用されます。

awk/gawk を使用してファイルをロードし、変数をインポートし、変数を追加して、その場所に保存する予定です。

VPSで過度のディスク書き込みとCPU使用率を節約するための最も効率的な方法は何ですか? Fail2banに何かを登録するときは、ファイルからランダムな数を取得して増やしてから最も効率的な方法で作成してください。同じファイルを返す可能な方法(ディスクIO、メモリ使用量、またはCPU使用量)。

[1] - Fail2Banは、コマンドライン引数を追加するための次のタスクを提供します。ここに効率的なスニペットを追加したいと思います。

[Definition]
actionstart =
actionstop =
actioncheck =
actionban = awk...
actionunban = awk..

*デブロッキングを同様に効率的な方法で実行でき、その逆の場合でもボーナスポイント(数量減少)

ベストアンサー1

ファイルの数を増やす非常に高速な方法は次のとおりです。

awk -F, '{$0=$0+1}1' OFS=, failtoban.txt >tmp; mv tmp failtoban.txt

できることを減らすには:

awk -F, '{$0=$0-1}1' OFS=, failtoban.txt >tmp; mv tmp failtoban.txt

しかし、同時に急速に増加または減少することは考慮されない。

実際にいくつかの小さな変更を行った後、その場所でファイルを変更できます。

増加:

awk -i inplace '{ print $0=$0+1 }' failtoban.txt

ますます:

awk -i inplace '{ print $0=$0-1 }' failtoban.txt

Ed Mortonのコメントによれば、これらすべてがより賢明に行われる可能性があります。

増加:

awk -F, '{++$0}1' OFS=, failtoban.txt >tmp; mv tmp failtoban.txt

ますます:

awk -F, '{--$0}1' OFS=, failtoban.txt >tmp; mv tmp failtoban.txt

増加:

awk -i inplace '{ print ++$0 }' failtoban.txt

ますます:

awk -i inplace '{ print --$0 }' failtoban.txt

おすすめ記事