2017-04-19 6 views
0

こんにちは、素晴らしいコード作成者、bashパラレルddとmkfs

最初は私はbashの初心者です。 これは、Linuxマシンで数百usbのドライブをできるだけ早く自動でフラッシュすることを可能にするスクリプトを作ることです。変更する必要はありません。 これ以上のパッケージのインストールはありません。

これで問題になりました: 私はタスクを2つのスケッチに分割しました。

1つのフィルタlsusbと適切なデバイスをgrepsし、デバイスIDを使用してバックグラウンドプロセスを開始し、イメージをコピーしてpartentioning stuffを実行します。

メインスクリプトは、新しいデバイスをフィルタリングし、それらのための新しいバックグラウンドプロセスを作成します。 さらに適切なデバイスが残っていない場合、メインスクリプトはすべてのバックグラウンドプロセスが完了するのを待ってから、すべてのデバイスを取り出して次のバンチを入れてもらいます。

現時点では、一方のバックグラウンドプロセスのddは、他方のバックグラウンドプロセスが終了するのを待っています。彼らは並行して実行する必要があり、ddを開始するプロセスは異なるpidを持っているので、私はなぜ待っているのか分かりません。ここで

は、スクリプトの一部です:

最初のパラメータは、シリアル番号であり、第二には、コピーするイメージファイルの名前です

+0

コードに4つの空白を付けます。 [edit-help](http://stackoverflow.com/editing-help)を見てください。 – Cyrus

+1

投稿されたスクリプトの複数のインスタンスをバックグラウンドで起動しますが、それらは連続して実行されていますか?これはこのスクリプトまでではありません。バックグラウンドを実行するスクリプトを(追加で)投稿する必要があります。 –

+0

投稿されたスクリプト全体がシリアルで実行されているわけではなく、dd部分だけです。 ps auxを使うと、私が始めたすべてのバックグラウンドプロセスが実行中であることがわかりますが、ddプロセスは1つだけで、終了すると新しいプロセスが開始されます。 ./flash.sh $ temp_serial $ Image& –

答えて

0

あなたがラインからsyncを移動しようとすることができすべての操作が完了するまで待ってから(wait $i)、echo "all connected devices are flashed, please change devices"の行または別の行に8を入力します。

関連する問題