並列プロセスを理解するのは困難です。 Atmハードドライブを一括削除しようとしてスクリプトを作成しましたが、並行して実行されません。
for i in "${!wipe[@]}"; do
dd if=/dev/zero of=/dev/${wipe[$i]} &
wait
ddはディスクをゼロに設定しますが、これを順番に実行するため、8つのディスクに対して実行すると時間がかかることがあります。ありがとう
答え1
done
forループがないため、スクリプトはまったく実行しないでください。これは確かに抜粋された内容であり、重要な部分が欠落しています。
欠落がdone
フラグメントの後に発生すると仮定すると、待機はforループ内にあるため、dd
バックグラウンドで開始してから次の反復にwait
進む前に完了します。
デフォルトでは、インデントは表示されたコードと一致しません。これはPythonではありません。 Pythonとは異なり、bashはインデントを無視します。インデントが欲しいと確信していますが、done
待つ前にインデントがなければ意味がありません。
答え2
次のように動作します。
parallel -j0 --dryrun dd if=/dev/zero of=/dev/{} ::: "${!wipe[@]}"
--dryrun
出力が正しく表示されたら削除します。
(任意のデータでハードドライブを上書きすることも検討してください。 https://gitlab.com/ole.tange/tangetools/-/tree/master/rand大量の暗号化セキュリティ疑似乱数データを生成します。