短い質問:ファイル内の単一番号変数を更新する最も効率的な方法は何ですか?
長い質問:私はさまざまな理由でどのホストが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