Bashスクリプトは1秒ごとに実行する必要があります。

Bashスクリプトは1秒ごとに実行する必要があります。

データキャッシュシナリオに対して実行するいくつかのクリーンアップコマンドがあります。私の考えでは、bashこのスクリプトは完全なクリーンアップタスクを実行する必要があるかどうかを確認する簡単な方法だと思います。ただし、キャッシュは時間に非常に敏感であるため、スキャンスクリプトは毎秒実行する必要があります。最良のアプローチは何ですか?

Crontabは数分しかかからないため、ほとんどのアプリケーションに適しています。

bashスクリプトをバックグラウンドサービスとしてインストールできますか?

第二に、&コマンドで始まり、しばらくスリープ状態に永遠に繰り返すことができますか?

答え1

最も簡単な方法はwatchコマンドです。 -n オプションに秒数を渡します。

 watch -n1 'rand'

答え2

使用sleep。この試みwhile true ; do ./your-script & ; sleep 1; done

答え3

次のシェルスクリプト(と呼びますrepeat-cleanup.sh)を使用すると、1秒遅れてコードを繰り返し実行できます。各実行間

while true; do
  # Your cleanup code here, or execute a script containing said code
  sleep 1
done

それを使って実行二重分岐:

( ./repeat-cleanup.sh & )

あるいは、スクリプトを完全にスキップして次の行で始めることもできます。

( while true; do ./cleanup.sh; sleep 1; done & )

説明する

どちらの方法も毎秒スクリプトを実行します。代わりに、スクリプトを実行するたびに1秒待ちます。スクリプトが数百ミリ秒以上かからない限り、これは問題ではありません。

デュアルブランチはプロセスを放棄してシェルを閉じても実行され続けます。プロセスをバックグラウンドに配置するためにのみ使用する場合、この方法は効果がありません&

私はAlpine Linuxで単純なスクリプトを使用して両方の方法をテストしましたが、同じように動作します。

答え4

私は次のようなものを使用しています:

do-the-job;
sleep 1; // wait one second till next run
./script-name &; // run same script again on background

ところで、正しいのかはわかりません:)

関連情報