dd와 함께 pv를 사용하는 방법은 무엇입니까?

dd와 함께 pv를 사용하는 방법은 무엇입니까?

dd 및 pv를 사용하여 USB 드라이브에 iso를 쓰려고 합니다. 나는 그랬다:

iso="myiso.iso"; dd if="$iso" bs=1M | pv --eta --size $(ls -l "$iso" | awk '{print $5}') --progress --bytes --rate --wait > /dev/sdg

이 가이드를 따르십시오: https://gist.github.com/rriemann/1406035

그러나 pv의 출력에 따르면 iso가 매우 빠르게 "기록"됩니다. 나는 그것이 모두 디스크 캐시 등에 저장되어 있다고 생각합니다. 그런 다음 PV가 죽었습니다. ps는 pv가 여전히 실행 중이지만 dd가 실행되고 있지 않음을 보여줍니다. strace pv를 시도했지만 출력이 없고 strace도 중단됩니다! Ctrl+C는 strace에 영향을 주지 않습니다. 실제로 신호 15, 3, 2 또는 1에는 응답하지 않습니다. 각 신호에 대해 몇 분 정도 기다리십시오. 결국 9개를 보내야 했습니다.

이에 따르면: http://www.reddit.com/r/linux/comments/1xvr25/linux_tip_dont_use_kill_9/ strace 바이너리가 제대로 작동하지 않습니다.

내 질문은 다음과 같습니다.

  1. PV 보고서의 데이터를 어떻게 더 유용하게 만들 수 있나요? 나는 그것이 아마도 "해야 하는" 일, 즉 파이프된 바이트를 보고하는 일을 하고 있다는 것을 알고 있습니다. 하지만 이는 USB 드라이브, 에타 등에 기록된 바이트의 대략적인 추정치인 내가 알고 싶은 내용에는 도움이 되지 않습니다.

  2. 왜 strace가 어떤 신호에도 응답하지 않습니까? 내 생각엔 strace가 다음 신호를 처리하기 전에 모니터링하고 있는 프로세스의 시스템 호출을 기다리는 것 같은데, 이것이 버그라고 생각됩니다. 그러나 이것은 단지 추측일 뿐이다. 추적 버전 4.5.20.

답변1

dd어쩌면 스틱의 다른 쪽 끝에 놓고 그것 directsync플래그를 사용하여 캐싱을 피하려고 할 수도 있습니다.

pv "$iso" | dd bs=1M oflag=direct,sync of=/dev/sdg

그렇게 하면 대부분 dd의 청크 크기를 캐시해야 합니다. 이 경우 파이프 자체에 있는 모든 내용 1M도 캐시해야 합니다.|

관련 정보