웹사이트 검색

PV 및 Progress 유틸리티를 사용하여 Linux 명령의 진행 상황을 모니터링하는 방법


이 페이지에서

  1. Linux PV 명령
  2. Linux 진행 명령\n
  3. 결론

명령줄을 통해 펜 드라이브에서 Linux 시스템으로 매우 큰 파일을 방금 복사하기 시작한 시나리오를 생각해 보세요. 문제의 파일이 무거우면 프로세스에 시간이 걸리므로 다른 작업을 시작합니다.

잠시 후 돌아와서 명령이 계속 실행되고 있음을 확인합니다. 진행 중인 복사 작업에 시간을 좀 더 주기로 결정합니다. 얼마 후 다시 살펴보면 아무 것도 변경되지 않았음을 알 수 있습니다. 즉, 복사 프로세스가 종료되지 않았으며 명령에서도 오류가 발생하지 않았습니다.

그런 상황에 처한 적이 있습니까? 그렇다면 무엇을 했습니까? 솔직히 이러한 경우, 특히 헤드리스 Linux 시스템에서 작업하는 경우에는 할 수 있는 일이 많지 않습니다. 대부분의 경우 기다리거나 Ctrl+C를 사용하여 진행 중인 작업을 취소한 다음 다시 시작합니다.

GUI를 통해 파일을 복사하려고 할 때와 마찬가지로 이와 같은 상황에서 진행률 표시줄(또는 이와 유사한 것)을 볼 수 있다면 더 좋지 않을까요? 분명히 명령줄 작업을 위한 진행률 표시줄은 매우 유용할 것입니다. 그러한 솔루션을 찾고 있다면 이 기사에서 더 이상 보지 말고 명령줄에서 작업을 쉽게 수행할 수 있는 두 가지 명령줄 유틸리티인 PV 및 Progress에 대해 설명합니다.

이 튜토리얼에서 언급한 모든 명령과 지침은 Ubuntu 14.04에서 테스트되었습니다.

리눅스 PV 명령어

공식 문서에 따라 pv 명령은 파이프를 통한 데이터 흐름을 모니터링합니다. 이 명령어는 진행 중인 작업에 대한 다음 정보를 표시합니다. 경과 시간, 완료율(
진행률 표시줄 포함), 현재 처리량 속도, 전송된 총 데이터 및 ETA.

"사용하려면 적절한 옵션을 사용하여 두 프로세스 사이의 파이프라인에 삽입하세요"라고 매뉴얼 페이지에 설명되어 있습니다. "표준 입력이 표준 출력으로 전달되고 진행 상황이 표준 오류로 표시됩니다."

이제 예제를 통해 pv 명령 사용법을 이해해 봅시다. 하지만 그 전에 시스템에 유틸리티가 있는지 확인하세요. 그렇지 않은 경우 다음 명령을 사용하여 Debian 기반 시스템(예: Ubuntu)에 쉽게 다운로드하여 설치할 수 있습니다.

sudo apt-get install pv

이제 예를 들어 보겠습니다. 다음 스크린샷은 펜 드라이브의 디렉토리 내부에 보관된 이미지를 시스템 데스크탑에 복사할 때 실행 중인 pv 명령을 보여줍니다.

보시다시피 pv 명령은 진행률 표시줄과 기타 유용한 정보를 표시했습니다. 이것은 명령의 기본 동작입니다. 그러나 출력을 제한하려면 디스플레이 스위치를 사용하면 됩니다. 예를 들어 다음 명령은 진행률 표시줄만 표시하고 다른 것은 표시하지 않습니다.

pv -p /media/himanshu/1AC2-A8E3/Maldives-2016/* | gzip > ./Desktop/trip-pictures.gz

pv에게 진행률 표시줄만 켜도록 지시하는 -p 디스플레이 스위치를 사용했기 때문입니다. 디스플레이 스위치의 전체 목록을 보려면 명령 매뉴얼 페이지로 이동하십시오.

그런 다음 몇 가지 출력 수정자가 있습니다. 예를 들어 명령과 함께 -W 또는 --wait 옵션을 사용하면 진행 정보를 표시하거나 ETA를 계산하기 전에 첫 번째 바이트가 전송될 때까지 기다리라고 지시합니다. 이는 파이핑 대상 프로그램이 시작하기 전에 추가 정보가 필요한 경우에 특히 유용합니다.

마지막으로 pv 명령은 일부 데이터 전송 수정자도 제공합니다. 예를 들어 원하는 경우 초당 특정 바이트 수로 전송을 제한할 수 있습니다. 튜토리얼 앞부분에 포함된 스크린샷을 보면 데이터 전송 속도가 18MBps 이상입니다. 이제 5MBps로 제한하고 싶다고 가정하면 다음 명령어를 실행합니다.

pv -L 5m /media/himanshu/1AC2-A8E3/Maldives-2016/* | gzip > ./Desktop/trip-pictures.gz

-L 옵션 뒤에 값 5m이 여기에 트릭을 수행합니다. 다음 스크린샷에서 실행 중인 위 명령을 참조하세요.

"k, m, g 또는 t 접미사를 추가하여 킬로바이트(*1024), 메가바이트 등을 나타낼 수 있습니다"라고 매뉴얼 페이지에 설명되어 있습니다. 출력 및 데이터 전송 한정자에 대한 자세한 정보는 명령 매뉴얼 페이지에서도 볼 수 있습니다.

Linux 진행 명령

Progress(이전에는 cv라고 함)는 cp, mv, dd, tar, gzip/gunzip, cat 등과 같은 coreutils 기본 명령어와 관련된 진행 중인 작업의 진행률을 제공하는 명령줄 유틸리티입니다. "또한 예상 시간과 처리량을 표시할 수 있으며 상단과 같은 모드(모니터링)를 제공합니다"라고 공식 문서는 말합니다.

Progress를 설치하기 전에 명령이 이 라이브러리에 의존하므로 먼저 라이브러리 ncurses가 시스템에 있는지 확인해야 합니다. 그렇지 않은 경우 Debian/Ubuntu 사용자는 다음 명령을 사용하여 ncurses 패키지를 다운로드하고 설치할 수 있습니다.

sudo apt-get install libncurses5-dev

그런 다음 다음 명령을 사용하여 GitHub 리포지토리에서 Progress 명령 패키지를 다운로드합니다.

git clone https://github.com/Xfennec/progress.git

그런 다음 진행 디렉터리에 들어가 다음 명령을 실행합니다.

make
sudo make install

그게 다야. 이제 Progress 명령이 Linux 상자에 설치됩니다. 다음 스크린샷(프로젝트 GitHub 페이지에서 가져옴)은 실행 중인 명령을 보여줍니다.

보시다시피 Progress 명령은 coreutil 명령과 관련된 모든 진행 중인 작업에 대한 정보를 제공합니다. 다른 Linux 명령줄 도구와 마찬가지로 Progress도 여러 명령줄 옵션을 제공합니다. 다음은 유용할 수 있는 옵션 목록입니다.

  • -m (--monitor) : 모니터링되는 프로세스가 계속 실행되는 동안 루프\n
  • -M (--monitor-continuously) : 모니터와 비슷하지만 절대 멈추지 않음(진행 상황을 보는 것과 유사)\n
  • -c (--command cmd) : 이 명령 이름만 모니터링합니다(예: firefox). 이 옵션은 명령줄에서 여러 번 사용할 수 있습니다.\n
  • -p (--pid id) : 이 숫자 프로세스 ID만 모니터링합니다(예: "pidof firefox"). 이 옵션은 명령줄에서 여러 번 사용할 수 있습니다.\n
  • -i (--ignore-file file) : 파일에 대한 프로세스를 보고하지 않습니다. 파일이 아직 존재하지 않는 경우 완전하고 깨끗한 절대 경로를 제공해야 합니다. 이 옵션은 명령줄에서 여러 번 사용할 수 있습니다.\n

결론

진행률 도구는 coreutils 명령어로 제한되지만 PV는 일반적으로 모든 명령줄 활동을 모니터링하는 데 사용할 수 있습니다. 또한 PV는 다운로드 및 설치도 쉽습니다. 그러나 계속 진행하여 PV가 Progress보다 낫다고 결론을 내리기 전에 PV와 달리 Progress를 사용하면 모니터링하려는 명령을 수정할 필요가 없다는 점을 명심하십시오. 따라서 둘 중 어느 것이 더 나은지는 귀하의 요구 사항에 따라 크게 달라집니다.