태양광 발전은 어떻게 작동하나요?

태양광 발전은 어떻게 작동하나요?

다음 명령은 어떻게 작동합니까?

pv file.tar.gz | tar -xz

내 이해에 따르면 파이프 연산자는 파이프 끝에 , 및 의 매핑을 |만들고 의 매핑은 , 및 모두에 존재합니다 .pipestdoutpvO_WRONLYtarstdinO_RDONLYO_WRONLYO_RDONLYpipefs

이것은 모두 훌륭하지만 내 화면에 다음이 인쇄됩니다.

31.1MiB 0:00:05 [6.17MiB/s] [===================================>] 100%

내가 아는 한 이 진행률 표시줄은 에 의해 생성되지 않습니다. tar왜냐하면 사용 옵션이 있을 것이고 필요하지 않으므로 생성해야 하기 pv때문입니다 . pv하지만 어떻게? 에 매핑 pv됩니다 .stdoutO_WRONLY

나는 또한 일부 쉘이 사용한다는 것을 읽었습니다.소켓 쌍교체할 파이프 pipefs소켓 쌍양방향으로 진행됩니다. 그러나 이는 둘 중 하나 또는 둘 다 완료될 때까지 stdin두 명령을 묶는 것으로 보입니다 . stdout위의 예에서는 진행률 표시줄이 실시간으로 업데이트되므로 그렇지 않습니다.

답변1

pv진행 표시줄은 표준 오류에 기록되는 기능입니다 . pv매뉴얼 에서 :

pv는 경과 시간, 완료율(진행률 표시줄 포함), 현재 처리량, 전송된 총 데이터, 예상 도착 시간 등의 정보를 제공하여 파이프라인을 통한 데이터 진행 상황을 표시합니다.

이를 사용하려면 두 프로세스 사이의 파이프에 삽입하고 적절한 옵션을 사용하십시오. 표준 입력은 표준 출력으로 전달되며 진행 상황은 표준 오류에 표시됩니다.

그러나 표준 출력 및 표준 오류를 리디렉션하는 동안 TTY에 쓰는 데 실제로 문제가 없습니다.

$ ( echo "out"; echo "error" >&2; echo "hi there" >$(tty) ) 2>&1 | cat >file
hi there

$ cat file
out
error

게다가, O_WRONLYand O_RDONLY는 명사가 아니라 형용사입니다. 표준 출력은 쓰기 전용이고 표준 입력은 읽기 전용입니다.

관련 정보