Ctl+t를 누를 때만 dd가 출력되는 이유는 무엇입니까? [복사]

Ctl+t를 누를 때만 dd가 출력되는 이유는 무엇입니까? [복사]

이것은 OSX의 경우입니다. 이것을 터미널에서 실행하면

scottcarlson$ sudo dd if=Downloads/CentOS-7-x86_64-Everything-1511.iso of=/dev/disk2 2> Desktop/out.txt

그럼 이건 또 다른 거야

tail -f Desktop/out.txt

Ctlt첫 번째 터미널을 누를 때만 로그를 업데이트합니다 dd. 성격 때문일까요 dd?

디바이스에 정확히 어떻게 쓰는지는 모르겠지만 프로세스에 잠시 쉬어가며 로그에 쓰라고 요구하는 건 너무 무리한 일인가요?

답변1

첫 번째 터미널에서 dd와 함께 Ctlt를 누를 때만 로그를 업데이트합니다. dd의 특성 때문일까요?

예. 그 본질은 dd주어진 신호가 수신될 때 현재 상태를 출력하는 것입니다. 대부분의 운영 체제에서 이 신호는 SIGUSR1표준 신호이지만 OS X에서는 이라는 비표준 신호를 사용합니다 SIGINFO. 또한 OS X에는 모든 운영 체제에서 전송되는 것처럼 tty키 조합을 사용하여 특정 신호를 전송할 수 있는 드라이버 설정이 있습니다 .CtrlTCtrlCSIGQUIT

디바이스에 정확히 어떻게 쓰는지는 모르겠지만 프로세스에 잠시 쉬어가며 로그에 쓰라고 요구하는 건 너무 무리한 일인가요?

바로가기를 사용하여 정확하게 해당 작업을 수행하도록 요청하고 있습니다. 정기적으로 자동 업데이트를 원하는 경우 다음과 같은 간단한 쉘 루프를 실행하는 것을 막을 수 있는 방법은 없습니다.

while kill -INFO $(pgrep dd); do sleep 5; done

이는 pgrepOS X에서 사용 가능하다고 가정합니다. 그렇지 않으면 명령 을 선택 pid하고 이를 두 번째 인수 dd로 사용하십시오 .kill

답변2

표시되는 내용 은 출력 ctlt이 아닌 실행 중인 프로세스 정보의 요약입니다 .dd

dd예상한 것과 달리 진행 정보가 출력되지 않습니다.

다른 터미널 창에서 실제 진행 상황을 보려면 출력 파일 크기 변경을 살펴보세요. 이 경우 원시 디스크에 기록하므로 인내심이 가장 좋은 친구가 될 수 있습니다.

답변3

OS-X에서 실행하면 다음과 같은 키 조합 stty -a이 표시됩니다.^Tstatus

% stty -a | grep '\^T'
        min = 1; quit = ^\; reprint = ^R; start = ^Q; status = ^T;

~에서man dd

 If dd receives a SIGINFO (see the status argument for stty(1)) signal,
 the current input and output block counts will be written to the standard
 error output in the same format as the standard completion message.  If

두 가지를 함께 사용하면 dd런타임 시 클릭하면 ^T쓰기 요약이 표시됩니다.

관련 정보