プログラムは複数のファイルで並列に実行されます。

プログラムは複数のファイルで並列に実行されます。

フォルダ内のすべてのファイルを繰り返し(通常は永続的に)コマンドを実行する小さなスクリプトがあります。オリジナル

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

おすすめ記事