병렬 프로세스를 이해하는 데 어려움이 있습니다. Atm 하드 드라이브를 일괄 삭제하려고 하여 스크립트를 생성했지만 병렬로 실행되지 않습니다.
for i in "${!wipe[@]}"; do
dd if=/dev/zero of=/dev/${wipe[$i]} &
wait
dd는 디스크를 0으로 설정하지만 이 작업을 차례로 수행하므로 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대량의 암호화 보안 의사 난수 데이터를 생성합니다.