最後のスクリプトが1分以内に実行されない場合は、新しいスクリプトを起動します。

最後のスクリプトが1分以内に実行されない場合は、新しいスクリプトを起動します。

30分ごとにスクリプトを実行するには、cronタブにエントリが多すぎます(スクリプト50以上)。

30分ごとにすべてのスクリプトが同時に実行されるため、一度に50以上のプロセスが開始されるため、サーバーの負荷が増加します。

この問題を解決するには、crontabを設定してシェルスクリプトを実行させ、このシェルスクリプト内ですべてのスクリプトを1つずつ実行します。

例えばallscript.shcrontabで実行されます

allscript.sh

#!/bin/bash
a.sh
b.sh
c.sh
d.sh
.
.
.
ay.sh

ところが、一つずつ実行してみると、あるスクリプトがあまりに多くの時間(5分)がかかる場合、他のスクリプトも特定の時間だけ待たなければならない。したがって、このスクリプトでは、あるプロセスが1分以上かかる場合、他のスクリプトの実行が自動的に開始されるように設定したいと思います。

ベストアンサー1

ジョブキューを使用します。あなたができることは、コアごとに1つのスレッドで作業キューを設定することです。これにより、すべてのジョブが1つのジョブとしてキューに追加され、1つのジョブが他のジョブよりも時間がかかると、別のジョブが別のスレッドで実行されます。

これを達成する方法はいくつかあります。

以下はあなたに役立ついくつかのクエリです。

Ubuntuジョブキュー

バッシュジョブキュー

おすすめ記事