진행률 표시줄의 다양한 동작: 로컬 대 원격 SSH bash 스크립트

진행률 표시줄의 다양한 동작: 로컬 대 원격 SSH bash 스크립트

SSH를 통해 원격으로 실행되는 로컬 스크립트에서 최소 진행률 표시줄을 가져오는 데 문제가 있습니다. 명령에 따라 다른 원치 않는 진행 표시기(wget의 점선)가 나타나거나 방금 알아차린 것(pv|tar)이 나타납니다.

내가 의미하는 바를 설명하기 위해 예를 들어 보겠습니다.

wget -q --show-progress https://some.file -P /tmp
some.file     11%[=========>          ]  20,08M  4,47MB/s    ETA 38s  # Nice looking progress bar

동일한 코드 줄이 원격으로 실행됩니다.

ssh user@server 'wget -q --show-progress https://some.file -P /tmp'
     0K .......... .......... .......... .......... ..........  0% 1,43M 2m6s  # Not so nice for longer scripts and big files
    50K .......... .......... .......... .......... ..........  0% 1,73M 1m55s 
   100K .......... .......... .......... .......... ..........  0% 5,16M 88s
   150K .......... .......... .......... .......... ..........  0% 2,56M 84s
   200K .......... .......... .......... .......... ..........  0% 5,14M 74s
   250K .......... .......... .......... .......... ..........  0% 5,36M 67s
... (etc)

컬이 훌륭하게 작동한다는 점을 언급하고 싶습니다. 하지만 제가 말했듯이 tar를 사용하여 추출하는 동안 진행률 표시줄을 얻으려고 할 때 pv에서도 동일한 문제에 직면했습니다.

답변1

매뉴얼 페이지에서:

--progress=type
사용하려는 진행률 표시기 유형을 선택합니다. 법적 지정자는 "점"과 "막대"입니다.

기본적으로 "막대" 표시가 사용됩니다. 검색 상태를 나타내기 위해 ASCII 진행률 표시줄 그래픽("온도계" 디스플레이라고도 함)을 그립니다. 출력이 TTY가 아닌 경우 기본적으로 "포인트" 열이 사용됩니다.

첫 번째 조각의 진행률 표시줄은 "막대"이고 두 번째 조각은 "점"입니다. 명령줄에 제공된 명령을 실행 하면 ssh기본적으로 원격 측에 tty가 할당되지 않으므로 이로 인해 wget진행률 표시줄 스타일이 변경될 수 있습니다.

wget --progress=bar:force해당 스타일을 선택하도록 강제하거나 ssh -tSSH 클라이언트에 TTY를 할당하도록 지시하는 데 사용할 수 있습니다 .

관련 정보