フォルダ内のすべてのファイルを繰り返し(通常は永続的に)コマンドを実行する小さなスクリプトがあります。オリジナル
for file in ./folder/*;
do
./bin/myProgram $file > ./done/$file
done
(構文エラーは無視してください。これは疑似コードのみです。)
これで、このスクリプトを同時に2回実行したいと思います。明らかに./done/$fileが存在する場合、実行する必要はありません。だから私はスクリプトを次のように変更しました。
for file in ./folder/*;
do
[ -f ./done/$file ] || ./bin/myProgram $file >./done/$file
done
したがって、基本的に質問は次のようになります。 2つのスクリプト(またはしばしば1つ以上のスクリプト)が実際に同じポイントにあり、done
失敗したファイルがあることを確認し、コマンドを2回実行することは可能ですか?
これは完璧ですが、私はそれが非常に疑わしいです。これは非常に簡単です:D同じファイルを処理する場合、スクリプトを「同期」することは可能ですか?
ベストアンサー1
可能なことであり、実際にそのようなことが起こっています。使うファイルロックこの状況を避けるために。上記のページの例:
if mkdir /var/lock/mylock; then
echo "Locking succeeded" >&2
else
echo "Lock failed - exit" >&2
exit 1
fi
# ... program code ...
rmdir /var/lock/mylock