dd의 진행 상황을 어떻게 모니터링합니까?


654

dd놀랍습니다. 하드 드라이브를 다른 드라이브에 복제하고 하드 드라이브를 완전히 제로화하는 등의 작업을 dd수행 할 수 있습니다. 그러나 명령 을 실행하면 진행 상황을 알 수있는 것이 없습니다. 명령이 끝날 때까지 커서에 있습니다. 그렇다면 어떻게 dd의 진행 상황을 모니터링합니까?

답변:


728

2016 업데이트 : GNU coreutils> = 8.24 (Ubuntu Xenial 16.04 이상에서 기본값)를 사용하는 경우 진행률을 표시하는 다른 방법은 아래 방법 2를 참조하십시오.


방법 1 : 사용하여 pv

pv입 / 출력 전용 dd명령 사이에 설치 하고 배치하십시오 .

참고 : 이미 시작한 후에는 사용할 수 없습니다 dd.

에서 패키지 설명 :

pv-파이프 뷰어-파이프 라인을 통한 데이터 진행을 모니터링하기위한 터미널 기반 도구입니다. 두 프로세스 사이의 일반 파이프 라인에 삽입하여 데이터가 얼마나 빨리 전달되는지, 얼마나 오래 걸 렸는지, 완료까지 걸리는 시간 및 완료까지 소요되는 시간을 시각적으로 표시 할 수 있습니다.

설치

sudo apt-get install pv

dd if=/dev/urandom | pv | dd of=/dev/null

산출

1,74MB 0:00:09 [ 198kB/s] [      <=>                               ]

--size시간 추정을 원한다면 대략적인 크기를 지정할 수 있습니다.


예 / dev / sdb에서 2GB 디스크를 복사한다고 가정

없는 명령 pv은 다음과 같습니다.

sudo dd if=/dev/sdb of=DriveCopy1.dd bs=4096

명령 pv:

sudo dd if=/dev/sdb | pv -s 2G | dd of=DriveCopy1.dd bs=4096

산출:

440MB 0:00:38 [11.6MB/s] [======>                             ] 21% ETA 0:02:19

다른 용도

물론 pv출력을 stdout으로 파이프하는 데 직접 사용할 수 있습니다 .

pv /home/user/bigfile.iso | md5sum

산출

50,2MB 0:00:06 [8,66MB/s] [=======>         ] 49% ETA 0:00:06

이 경우 pv크기를 자동으로 인식합니다.


방법 2 : (GNU Coreutils 8.24+)에 새로운 status옵션 추가dd

ddGNU Coreutils 8.24 이상 (Ubuntu 16.04 이상) status에는 진행률을 표시 하는 새로운 옵션이 있습니다.

dd if=/dev/urandom of=/dev/null status=progress

산출

462858752 bytes (463 MB, 441 MiB) copied, 38 s, 12,2 MB/s

76
pv bigfile.iso | dd of = / dev / yourdevice
Ion Br.

18
"dd"의 매개 변수는 전반 (파이프의 입력 부분)에 적합합니다 dd if=/dev/zero bs=1M count=35000 | pv | dd of=VirtualDisk.raw.
Sopalajo de Arrierez 2014 년

6
pv bigfile.iso | dd of=VirtualDisk.raw bs=1M count=35000작동합니다. @SopalajodeArrierez, 매개 변수는 두 번째 dd에 제공 될 수 있습니다.
SiddharthaRTRT

11
사용하는 pv < /dev/sda > /dev/sdb것 같습니다 더 나은 속도 (얻을 소스 )
니콜라 Feltrin

14
참고로 속도. Samsung 840 PRO SSD로 컴퓨터에서 테스트 : dd if=/dev/urandom | pv | of=/dev/sdb~ 18MB / s 쓰기, dd if=/dev/zero | pv | of=/dev/sdb~ 80MB / s, 보통 old dd if=/dev/zero of=/dev/sdb~ 550MB / s (SSD 최대 쓰기 속도에 근접). 모두와 함께 bs=4096000.
Tedd Hansen 2016 년

461

에서 하우투 : DD의 진행 상황을 모니터

kill명령 을 사용하여 정지하지 않고 dd의 진행 상황을 모니터 할 수 있습니다 .

dd일단 실행중인 진행 상황을 보려면 다른 터미널을 열고 다음을 입력하십시오.

sudo kill -USR1 $(pgrep ^dd)

프로세스를 중단하지 않고 터미널 창에 dd진행률 이 표시 dd됩니다. BSD 또는 OS X를 사용 INFO하는 경우 대신을 사용하십시오 USR1. USR1신호 DD를 종료한다.

dd진행 상황을 정기적으로 업데이트하려면 다음을 입력하십시오.

watch -n5 'sudo kill -USR1 $(pgrep ^dd)'

watchdd-n 초마다 프로세스 를 검사하고 ( -n5= 5 초) 중단하지 않고보고합니다.

위의 명령에서 올바른 작은 따옴표를 참고하십시오.


19
이것은 효과가 있었지만 몇 가지 의견이 있습니다. 우선, 왜 당신이 백틱을 이스케이프했는지 잘 모르겠습니다 (SO 편집기 인 경우 잘못했습니다). 둘째, 접두사 dd로 다른 것이 실행되는 경우를 대비하여 ^ dd $를 사용하는 것이 좋습니다. 마지막으로 USR1 신호를 보내기 위해 sudo가 필요하지 않습니다. 그렇지 않으면 좋은 대답, +1입니다.
gsingh2011

22
NB! 이 방법은 OSX에서 dd 작동을 방해합니다.
Maxim Kholyavkin

26
@Speakus kill -INFO $(pgrep ^dd$)OSX와 같은 BSD 시스템 에서 사용해야 합니다.
Torben

20
sudo pkill -usr1 dd기억하기 쉽고, 적어도 우분투 14.04에서는 완벽하게 작동하며 입력하기가 쉽지 않습니다.
Phizes

21
pvTeddHansen이 보여 주듯이 전송 속도가 느려질 것이므로 두려워 합니다. 또한 많은 사람들이 이미dd 작업을 시작 했기 때문에 이것을 검색 하고 있습니다.)
sudo

104

pv타이핑이 적거나 진행률이 낮고 다른 답변보다 몇 가지 편리한 샘플 사용법 :

먼저 다음 pv명령을 사용하여 를 설치해야합니다 .

sudo apt-get install pv

그런 다음 몇 가지 예는 다음과 같습니다.

pv -n /dev/urandom | dd of=/dev/null
pv -tpreb source.iso | dd of=/dev/BLABLA bs=4096 conv=notrunc,noerror

참고 : 첫 번째 샘플은 5 자 미만의 타이핑 dd if=/dev/urandom | pv | dd of=/dev/null입니다.

그리고 디스크 드라이브를 복제하는 것을 좋아합니다 (X를 드라이브 문자로 바꿉니다).

(pv -n /dev/sdX | dd of=/dev/sdX bs=128M conv=notrunc,noerror) 2>&1 | dialog --gauge "Running dd command (cloning), please wait..." 10 70 0

스크린 샷

출처 : http://www.cyberciti.biz/faq/linux-unix-dd-command-show-progress-while-coping/

또한 나 자신을 보관합니다.


3
당신은 또한 설치해야합니다 dialog명령으로apt-get install dialog
k7k0

7
dialog예를 좋아 하십시오 . 평온 지금 !
alex grey

파이썬으로 만 대화 상자를 호출 할 수 있습니까?
mikeymop

1
이 답변의 덕분에, 발견 dialogD :이 미친 듯이 쉘 스크립트 작성에 도움이 될 것입니다
HOLMS을

2
brew install pv dialogMac 용. 또한이 신사는 스타일로 계산합니다. 브라보.
evilSnobu

62

실행 중 Ctrl+ Shift+ T를 사용 dd하면 진행률 (바이트)이 출력됩니다.

load: 1.51  cmd: dd 31215 uninterruptible 0.28u 3.67s
321121+0 records in
321120+0 records out
164413440 bytes transferred in 112.708791 secs (1458745 bytes/sec)

5
Kubuntu Trusty에서 작동하지 않습니다. 충돌하는 키 바인딩일까요?
jamadagni

14
좋은 방법. OSX에서는 작동하지만 우분투 14.04에서는 작동하지 않습니다.
Maxim Kholyavkin

1
첫 번째 줄은 OS X에 의해 생성되며 후자의 3 줄만입니다 dd.
Itay Grudev

3
OS X와 ​​같은 BSD에서 kill -INFO를 사용할 수 있어야합니다.
macshome

3
우분투에서는 작동하지 않습니다. Ctrl-T / Ctrl-Shift-T ^T는 터미널 로만 출력 됩니다 (많은 터미널 앱은 Ctrl-Shift-T를 가로 채서 새 탭을 엽니 다 제외). OSX / BSD에 많은 수색자는이 답변을 주셔서 감사합니다 수 있지만, 그것은 우분투 아니다 분명해야한다 (또는 일반적으로 GNU / 리눅스?)
mwfearnley

60

완전성을 위해 :

버전 8.24GNU의로 coreutils는 진행 상황을 인쇄하는 매개 변수를 도입 DD에 대한 패치가 포함되어 있습니다.

이 변경 사항을 도입 한 커밋 에는 다음과 같은 주석이 있습니다.

dd : 통계를 주기적으로 인쇄하기위한 새로운 상태 = 진행 수준

Ubuntu 16.04.2 LTS를 포함한 많은 배포판 에서이 버전을 사용합니다.


8.24 coreutils : apt install build-essential및을 컴파일 한 방법을 추가하고 apt-get build-dep coreutilscoreutils-8.25.tar.xz를 다운로드 tar xvf coreutils-8.25.tar.xz configure --prefix=$HOME/usr/local하고 실행하십시오 make. 새로 컴파일 ddsrc디렉토리 는 dir입니다. 당신은 / 빈에 복사 한 SRC / DD로 실행 나타나서 기존 대체 할 수있다
HOLMS

2
시원한! 이 기능이 마음에 듭니다. 그리고 dd에게 인쇄 진행 출력을 가르치는 데 약 30 년이 걸렸습니다. :-)
Johannes Overmann

어떤 구호! 이 인수를 dd 쉘 별명에 즉시 추가하겠습니다.
스테판 헤 닝센

상태는 때때로 SI 단위와 2 진 단위 (예 : 10MB, 9.5MiB)와 같은 두 개의 숫자로 인쇄됩니다.
palswim

33

가장 좋은 방법은 http://dcfldd.sourceforge.net/ 을 사용 하는 것입니다. apt-get을 통해 쉽게 설치할 수 있습니다.


3
dcfldd에 대한 포인터 덕분에 dd와 매우 호환되지만 좋은 새로운 기능이 있습니다. 나는 특히 표준 진행을 좋아합니다.
플로이드

4
dcfldd가 더 잘 알려지지 않은 이유는 나에게 완전한 미스터리입니다.
Freedom_Ben

28
아마도 그 이름 때문일 것입니다.
Giovanni Toraldo

기본적으로 진행률 메시지, 메시지 업데이트 빈도 및 백분율 표시기 (N 블록)에 대한 dd옵션 및 옵션 이 있습니다 . 나는 그것을 별칭합니다 :)status=onstatusinterval=Nsizeprobe=[if|of]DD
kavadias

25

기본 진행 상태가 dd에 추가되었습니다 !!!

새 버전의 Coreutils (8.24)는 dd도구에 진행 상태를 추가합니다 .

Xubuntu 15.10에서의 사용법 :

터미널을 열고 다음 명령을 입력하십시오.

wget ftp://ftp.gnu.org/pub/gnu/coreutils/coreutils-8.24.tar.xz
tar -xf coreutils-8.24.tar.xz
cd coreutils-8.24
./configure && make -j $(nproc)

dd루트로 실행하십시오 .

sudo su
cd src
./dd if=/dev/sdc of=/dev/sda conv=noerror status=progress

바이트, 초 및 속도 (바이트 / 초)가 표시됩니다.

버전을 확인하려면 다음을 수행하십시오 dd.

원주민:

dd --version

새로운:

cd coreutils-8.24/src
./dd --version

18

이미 dd를 시작했고 펜 드라이브를 디스크에 복사 할 때와 같은 파일을 작성하는 경우 watch 명령을 사용하여 출력 파일의 크기를 지속적으로 관찰하여 변경 사항을 확인하고 완료를 추정 할 수 있습니다.

watch ls -l /pathtofile/filename

파일 크기 만 보려면 (인간보기) :

watch ls -sh /pathtofile/filename

또한 실행 가능한 방법 ...
ζ--

3
dd 출력을 파일이 아닌 다른 파일로 파이핑 (예 : 디스크에 쓰기 전에 gzip ')하는 경우에는 반드시 유용하지는 않습니다.
Ponkadoodle

특수 파일에서는 작동하지 않습니다.
Johannes Overmann

13

dd | pv | dd트라이어드는 DD 사용 260초 반대로 내 50기가바이트의 VM 사본이 800 초가 소요했다. 이 파이프 라인을 사용하면 pv는 적어도 입력 파일의 크기를 알지 못하므로 얼마나 멀리 있는지 알 수 없으므로 다음과 같이 단점이 없으며 속도 이점이 뛰어납니다.

큰 것에 대해서는 pv를 피하고 (Bash를 사용하는 경우) :

Control-Z dd 프로세스

bg배경에 넣습니다. 그 관찰 bg과 같은 당신에게 줄 것이다 출력 [1] 6011후자의 수는 프로세스 ID입니다를. 따라서 다음을 수행하십시오.

while true; do kill -USR1 process_id ; sleep 5; done

여기서 process_id는 관찰 한 프로세스 ID입니다. 다음과 같이 보일 때 Control-C를 누르십시오.

[1]+  Done dd if=/path/file.qcow2 of=/dev/kvm/pxetest bs=4194304 conv=sparse
-bash: kill: (60111) - No such process

끝났습니다.

편집 : 바보 시스템 관리자! 당신의 인생을 자동화, 작동하지 않습니다! 내가 모니터링하고 싶은 긴 dd 프로세스가 있다면, 여기에 전체 enchilada를 처리 할 하나의 라이너가 있습니다; 이 모든 것을 한 줄에 넣으십시오.

 dd if=/path/to/bigimage of=/path/to/newimage conv=sparse bs=262144 & bgid=$!; while true; do sleep 1; kill -USR1 $bgid || break; sleep 4; done

물론 스크립트를 작성하여 $ 1을 입력 파일로 만들고 $ 2를 출력 파일로 만들 수 있습니다. 이것은 독자를위한 연습으로 남습니다. 죽이기 전에 약간의 잠이 필요합니다. 그렇지 않으면 아직 준비가되지 않았을 때 신호를 dd로 보내려고하면 죽을 수도 있습니다. 원하는대로 수면을 조정하십시오 (두 번째 수면을 완전히 제거 할 수도 있음).

배쉬-FTW! :-)


1
while루프를 압축하십시오 . 사용하십시오 watch.
muru

1
@muru에 따라 다릅니다. 시스템에 대해서는 모르지만 CentOS7 *에서는 출력이 약간 깨집니다. 읽을 수는 있지만 질서 정연하게 보이지는 않습니다. 또한 그것은 당신의 dd 속도의 역사를 잃어 버리기 때문에 이전의 출력을 넘어 섭니다; 광산은 20MB / s와 300MB / s 사이에서 다릅니다. 숫자가 다양하고 유익한 것을 보는 것은 흥미 롭습니다. 큰 차이 중 일부는 내가 쓰는 LV에 대한 할당이 증가하는 LVM 씬 풀 때문이라고 생각합니다. * 예, 이것은 우분투 포럼이지만 "dd monitor progress"를 찾고 있습니다. Google의 첫 번째 결과입니다.
Mike S

아, 다른 터미널이나 화면 창에서을 실행하십시오 sudo watch pkill dd. 그런 다음 dd통계를 편안하게 출력하는 것을보십시오 .
muru

pkill은 기본적으로 SIGTERM을 보내지 않습니까? pgrep dd가 단일 dd를 실행할 때 3 개의 pid를 나타냅니다 : kthreadd, oddjob 및 dd. pkill이 무엇을 할까 두렵습니다. pkill을 사용하여 -USR1 신호를 보낼 수 있지만 다시 커널 스레드 또는 obbjob에 안전한지 알 수 없습니다. watch 명령은 더 깨끗해 보이지만 while 루프를 피하기위한 많은 추가 단계처럼 보입니다. 일반적으로 하나의 창에서 dd를 수행하는 경우 나중에 동일한 쉘에서 무언가를 수행합니다. while 루프는 안전합니다. 정확히 어떤 pid가 신호를 얻는 지 알고 있습니다.
Mike S

내가 사용하기 때문에 대부분 어떤 pid가 신호를 얻는 지 신경 쓰지 않습니다 watch pkill -USR1 -x dd. watch다른 유사한 작업 에도 사용 하기 때문에 자연스럽게 발생합니다.
muru


7

가장 쉬운 방법은 다음과 같습니다.

 dd if=... of=... bs=4M status=progress oflag=dsync

oflag=dsync글을 동기화 상태로 유지하므로 정보 status=progress가 더 정확합니다. 그러나 조금 느려질 수 있습니다.


1
gnu.org/software/coreutils/manual/html_node/dd-invocation.html 에 따르면 사용하는 conv=fsync것이 좋습니다
Chen Deng-Ta

감사합니다! 나는 원격 lvm2에 dd를하고 있으며 bs = 4M은 20의 인수만큼 전송을 증가 시켰으며 진행 표시는 훌륭합니다.
Lonnie Best

6

우분투 16.04에서

Ubuntu 16.04는 dd (coreutils) 버전 8.25 와 함께 제공됩니다 . 따라서 옵션 status=progress 지원됩니다 :-)

사용하려면 명령 status=progress과 함께 추가 하십시오 dd.

예 :

dd bs=4M if=/media/severus/tools-soft/OperatingSystems/ubuntu-16.04-desktop-amd64.iso of=/dev/null status=progress && sync

상태를 다음과 같이 제공합니다

1282846183 bytes (1.2 GiB, 1.1 GiB) copied, 14.03 s, 101.9 MB/s

여기에 이미지 설명을 입력하십시오


5

status=progress전송 중에 진행 상황을 확인 하려면 옵션 을 사용하십시오 .

또한 conv=fsyncI / O 오류가 표시됩니다.

예:

sudo dd if=mydistrib.iso of=/dev/sdb status=progress conv=fsync


3

진행률을 표시 dd하는 pv데 사용할 bash 래퍼를 만들었습니다 . 그것을 넣고 평소처럼 .bashrc사용 하십시오 dd.

# dd if=/dev/vvg0/root of=/dev/vvg1/root bs=4M
    2GB 0:00:17 [ 120MB/s] [===========================================================>] 100%            
0+16384 records in
0+16384 records out
2147483648 bytes (2.1 GB) copied, 18.3353 s, 117 MB/s

출처:

dd()
{
    local dd=$(which dd); [ "$dd" ] || {
        echo "'dd' is not installed!" >&2
        return 1
    }

    local pv=$(which pv); [ "$pv" ] || {
        echo "'pv' is not installed!" >&2
        "$dd" "$@"
        return $?
    }

    local arg arg2 infile
    local -a args
    for arg in "$@"
    do
        arg2=${arg#if=}
        if [ "$arg2" != "$arg" ]
        then
            infile=$arg2
        else
            args[${#args[@]}]=$arg
        fi
    done

    "$pv" -tpreb "$infile" | "$dd" "${args[@]}"
}

좋은 방법이지만 sudo 또는 time과 같은 명령에서는 작동하지 않습니다.
Maxim Kholyavkin

1
이것을 맨 위에 / usr / local / bin / dd에 넣으십시오 #!/bin/bash. 하단 : tmp=":${PATH}:"; tmp=${tmp/:/usr/local/bin:/:}; tmp=${tmp%:}; PATH=${tmp#:}; dd "$@"또는 dd위치 를 하드 코딩하고 싶을 수도 있습니다. 그런 다음을 사용하십시오 local dd=/usr/bin/dd. 실행 비트를 추가하는 것을 잊지 마십시오 : chmod +x /usr/local/dd.
midenok '11

2

그래서 오늘 나는 달리는 kill동안 루프에서 실행하려고하는 것에 약간 좌절했으며 dd, 병렬로 쉽게 실행할 수있는이 방법을 생각해 냈습니다.

function vdd {
    sudo dd "$@" &
    sudo sh -c "while pkill -10 ^dd$; do sleep 5; done"
}

이제 vdd일반적으로 사용 하는 모든 곳에서 사용하십시오 dd(모든 인수를 직접 전달 함) 5 초마다 진행 보고서가 인쇄됩니다.

유일한 단점은 dd가 완료 될 때 명령이 즉시 반환되지 않는다는 것입니다. 따라서이 명령을 사용하면 dd가 통지하고 종료하기 전에 리턴 한 후 추가 5 초 동안 대기 할 수 있습니다.


2

이것은 dd가 2 초마다 통계를 제공하도록 강제합니다.

watch killall -USR1 dd

2 초마다 5 초마다 변경하려면 다음과 같이 -n 5 옵션을 추가하십시오.

watch -n 5 killall -USR1 dd

2

CentOS 토지의 누군가 가이 스레드를 발견하는 경우를 대비하여 ...

'status = progress'옵션은 CentOS 7.5 및 7.6에서 작동합니다.

@davidDavidson의 위 답변은 Coreutils 8.24에 기능이 새로 추가되었음을 나타냅니다.

GNU coreutils 버전 8.24에는 진행률을 인쇄하기위한 매개 변수를 소개하는 dd 패치가 포함되어 있습니다.

이러한 경우가있을 수 있지만 CentOS는 동일한 버전 관리 체계를 따르지 않을 수 있습니다.

CentOS 7.6.1810과 함께 제공되는 Coreutils 버전은 다음과 같습니다.

coreutils-8.22-23.el7.x86_64 : A set of basic GNU tools commonly used in shell scripts

그리고 설치된 dd 버전은 다음과 같습니다.

[root@hostname /]# dd --version
dd (coreutils) 8.22
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Paul Rubin, David MacKenzie, and Stuart Kemp.

버전 8.22가 표시됩니다 .

그러나 CentOS 7.5 및 CentOS 7.6 (Coreutils 버전 8.22 모두)에서 dd로 'status = progress'를 테스트했으며 제대로 작동합니다.

RedHat이 이전 버전의 Coreutils를 사용하기로 선택한 이유는 모르겠지만 기능은 8.22와 함께 존재합니다.


1

위에서 언급했듯이 적어도 GNU coreutils 또는 busybox의 'dd'를 사용하면 진행 정보를 stderr에 인쇄하여 USR1 신호에 응답합니다.

나는 dd를위한 작은 래퍼 스크립트를 작성하여 멋진 퍼센트 완료 표시기를 보여 주며 어떤 식 으로든 dd의 프로세스 또는 작동 방식을 방해하지 않습니다. github에서 찾을 수 있습니다 :

http://github.com/delt01/dd_printpercent

불행히도,이 SIGUSR1 트릭은 컴파일 타임에 특정 기능이 활성화 된 GNU dd (coreutils 패키지의) 또는 busybox의 'dd'모드에서만 작동합니다. FreeBSD 및 OS X를 포함하여 대부분의 BSD 시스템에 포함 된 재고 'dd'에서는 작동하지 않습니다 ... :(


연결이 끊어졌습니다.
ishmael

1

을 사용하여 coreutils 프로그램의 진행 상황을 볼 수 있습니다 progress - Coreutils Progress Viewer.

다음을 모니터링 할 수 있습니다.

cp mv dd tar cat rsync grep fgrep egrep cut sort md5sum sha1sum sha224sum sha256sum sha384sum sha512sum adb gzip gunzip bzip2 bunzip2 xz unxz lzma unlzma 7z 7za zcat bzcat lzcat split gpg

맨 페이지를 볼 수 있습니다

명령이 실행되는 동안 별도의 터미널 창에서 사용하거나 dd 명령으로 실행할 수 있습니다.

dd if=/dev/sda of=file.img & progress -mp $!

여기서 &첫 번째 명령을 분기하고 명령이 끝날 때까지 기다리지 않고 즉시 계속 진행합니다.

progress 명령은 다음과 같이 시작됩니다. -m따라서 모니터링되는 프로세스가 끝날 때까지 대기 -p하므로 지정된 pid를 모니터링 $!하고 마지막 명령 pid입니다.

sudo와 함께 dd를 발행하면 다음과 같이 진행해야합니다.

sudo dd if=/dev/sda of=file.img &
sudo progress -m
# with no -p, this will wait for all coreutil commands to finish
# but $! will give the sudo command's pid
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.