bash 출력은 dd /dev/zero 및 대화 상자 --gauge를 사용하여 파일을 생성합니다.

bash 출력은 dd /dev/zero 및 대화 상자 --gauge를 사용하여 파일을 생성합니다.

다음 명령을 사용하여 새 파일(빈 파일)을 만들려고 합니다.

dd if=/dev/zero of=file.txt count=10240 bs=10240

또한 다음과 같이 대화 상자 출력 --gauge를 사용하고 싶습니다.

dd if=/dev/zero | pv | dd of=output.dat count=10240 bs=102400 iflag=fullblock | dialog --gauge "testing" 10 70 0

또한 다음 변형을 시도했습니다.

(pv -n /dev/zero | dd if=/dev/zero of=output.dat  bs=1000M  count=1) | dialog --guage "Creating a file..." 10 70 0

그러나 작동하지 않습니다. 파일이 완료되면 알려주세요.

감사해요.

답변1

dialog건너 뛰고 "일반"을 사용하는 것이 좋습니다.pv다음과 같이 명령줄에서 진행 상황을 확인하세요.

# dd if=/dev/zero bs=10240 count=102400| bash -c 'pv -s 1g  > /media/sudodus/usbdata/output.dat'
 320MiB 0:00:07 [39,2MiB/s] [=========>                        ] 31% ETA 0:00:15
...
1000MiB 0:00:34 [29,1MiB/s] [===============================>  ] 97%            
102400+0 records in
102400+0 records out
1048576000 bytes (1,0 GB, 1000 MiB) copied, 34,4327 s, 30,5 MB/s

나는 USB 플래시 드라이브에 글을 써서 더 느리고 쉽게 "볼" 수 있도록 했습니다.

답변2

제가 직접 해보려고 했으니 해결책은 이렇습니다.

pvstderr에 기록하므로 출력을 stdout으로 리디렉션해야 합니다.

암호화된 파티션에 0을 쓰고 싶습니다. 그래서:

#dd if=/dev/zero of=/dev/mapper/swap_crypt bs=1M
    dd: error al escribir en '/dev/mapper/swap_crypt': No queda espacio en el dispositivo
    4269+0 registros leídos
    4268+0 registros escritos
    4475322368 bytes (4,5 GB, 4,2 GiB) copied, 4,1489 s, 1,1 GB/s

출력이 필요하지 않으므로 dd오류 외에는 아무것도 인쇄하지 말라고 지시합니다 status=none.

# dd if=/dev/zero of=/dev/mapper/swap_crypt bs=1M status=none
# 

좋아, 출력이 없어! 이제 pv를 사용하여 진행 상황을 모니터링하고, 기록된 바이트 수도 알고 있으므로 전송된 바이트를 기준으로 백분율을 인쇄하도록 pv에 지시할 수 있습니다. -n전송될 백분율과 바이트를 기록합니다 -s.

# dd if=/dev/zero | pv -n -s 4475322368 | dd of=/dev/mapper/swap_crypt bs=1M  status=none
16
32
43
52
61
69
77
84
88
dd: error al escribir en '/dev/mapper/swap_crypt': No queda espacio en el dispositivo
100
# 

이제 stderr를 stdout으로 리디렉션하고 다음으로 파이프합니다 dialog --gauge.

#(dd if=/dev/zero | pv -n -s 4475322368 | dd of=/dev/mapper/swap_crypt bs=1M  status=none) 2>&1 | dialog --title "Status"  --gauge "Writing zeros..." 10 60 0 

이제 전송하기 전에 얼마나 많은 바이트가 소요되는지 파악하고 pv의 -s 매개변수에 있는 숫자를 바꾸면 됩니다(간단한 작업).

답변3

주제에서 약간 벗어났지만 status=progress피연산자를 사용하면 dd다음과 같은 결과를 얻을 수 있습니다.

748901888 bytes (749 MB, 714 MiB) copied, 3 s, 250 MB/s

관련 정보