単一のカウンターを維持する最良の方法は何ですか?

単一のカウンターを維持する最良の方法は何ですか?

毎秒100回未満で保証される毎秒数回カウンタを増やす簡単なbashスクリプトがあります。スクリプトはうまく機能しますが、コンピュータがクラッシュしてもカウンタが持続したいと思います。

SSD専用システムでカウンタを保存する最良の方法は何ですか?/var/<app>/更新するたびにどこかにエコーする必要があります(たとえば、ファイルに保存する必要がありますか?)もしそうなら、/var/<app>/それは正しいですか?この単一値を追跡するには、データベース全体をインストールする必要がありますか?これを効率的に実行できるかわいい、小さなLinux機能はありますか?

明らかに、私の問題は、別のスクリプト実行の間にカウンタが一定に保たれることを確認することではなく、すでにその問題を解決しました。私が心配しているのは、コンピュータのクラッシュによってシステムが突然予期せず失敗する場合です(したがって、trapシェルスクリプトに頼ることはできません)。

ベストアンサー1

単にファイルに値を保存することを検討してみましたか?これを行うには、データベースの代わりにファイルを使用できます。ただし、1秒あたり100回ずつファイルを読み取ると、スクリプトの競合状態が心配です。ただし、次のものを使用できます。

実行1:

var=2
echo $var > foo.txt

実行2:

var=$(head -n 1 foo.txt)
echo $var    # 2

sedより複雑な処理にも使用できます。また、スクリプトがシーケンシャルな場合は、単にファイルに追加して>>各実行の最後の行を読んで(を使用してtail)ロックの問題を解決することもできます。しかし、可能であれば、スクリプトを100回呼び出すのではなく、forループでスクリプトを実行する方が良いデザインになると思います。

おすすめ記事