10,000 個のファイルとbash、1 つのファイルを処理するスクリプトがあるとします。Kここで、スクリプトのみを並行して実行して、これらすべてのファイルを同時に処理したいと考えています。私は(明らかに)ファイルを複数回処理したくありません。
どのように実装することをお勧めしbashますか?
10,000 個のファイルとbash、1 つのファイルを処理するスクリプトがあるとします。Kここで、スクリプトのみを並行して実行して、これらすべてのファイルを同時に処理したいと考えています。私は(明らかに)ファイルを複数回処理したくありません。
どのように実装することをお勧めしbashますか?
「(」と「)」を使用するだけで、スクリプトの一部を別のプロセスで簡単に実行できます。を追加する&と、親プロセスは子プロセスを待機しなくなります。だからあなたは実際に使用します( command1; command2; command3; ... ) &:
while ... do
(
your script goes here, executed in a separate process
) &
CHILD_PID = $!
done
また$!、子プロセスの PID も表示されます。他に何を知る必要がありますか? 起動されたプロセスに到達したらk、他のプロセスを待つ必要があります。これは次を使用して行われwait <PID>ます。
wait $CHILD_PID
それらすべてを待ちたい場合は、 を使用してwaitください。
システムを実装するには、これで十分です。