データキャッシュシナリオに対して実行するいくつかのクリーンアップコマンドがあります。私の考えでは、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
ところで、正しいのかはわかりません:)