スクリプトをn回同時に実行する方法とセマフォをシミュレートする方法は?

スクリプトをn回同時に実行する方法とセマフォをシミュレートする方法は?

内部に数字のテキストファイルがあり、kshにscript.shがあります。スクリプトはファイルを読み取り、数字を取得し、数字を1ずつ増やし、ファイル内の新しい数字を上書きし、しばらく待機し、数字が120になるまでプロセスを繰り返します。

このスクリプトを同時にn回実行したいと思います。どうすればいいですか?

ただし、file.txtを編集したいn個のプロセスがあり、1つのプロセスのみを編集するためにプロセスが完了(スリープ)されると、2番目のプロセスが編集できるようになります。

ロックファイルを使用する必要があると言うこともできますが、残念ながら使用できないため、セマフォをシミュレートする別の方法を見つける必要があります。

どんなアイデアがありますか?

ありがとうございます。

ベストアンサー1

私は外部から数字の動作を制御することを好みます。スクリプトを呼び出して現在の数値をパラメータとして渡すだけです。

n=10
read nr < number.file
seq $((nr+1)) 120 | xargs -n 1 -P $n script.sh

スクリプト自体は次のように単純化されます。

#!/bin/ksh
number=$1
echo "Do job with/for number $number"
echo $number > number.file
sleep 10

もちろん、作業期間が異なる可能性がある場合は、より大きなファイルを上書きするのを防ぐために、書き込み前にデジタルファイルの現在の内容を確認することをお勧めします。ただし、これはミッション継続性が特定の種類の回復をサポートする必要がある場合にのみ重要です。

おすすめ記事