Como monitorar o progresso dos comandos do Linux (com PV e progresso)

Em vez de voar às cegas, use os comandos Linux pv e progress para rastrear o progresso de um comando. Esses utilitários fornecerão barras de progresso para comandos que normalmente não possuem. Você também verá um tempo estimado até a conclusão.

Se você estiver em um voo de longo curso em uma aeronave sem telas de vídeo nos encostos dos bancos, não é fácil saber a que distância você está. Você sabe quando você decolou. Você sabe quanto tempo o vôo deve durar. Mas como saber se você está no caminho certo, no prazo ou muito atrasado? Se você não quiser assistir ao filme em vôo, você pode alternar a tela do vídeo para mostrar um mapa com a posição de sua aeronave. Também obtém algumas estatísticas, como a hora prevista de chegada (ETA), o que é excelente.

Iniciar um comando a partir da janela do terminal pode, às vezes, parecer um vôo de longa distância sem uma tela de vídeo. Você não tem nada para dar qualquer indicação se tudo está bem ou se o processo travou, nem o quão perto de sua conclusão está. Um cursor piscando não é muito informativo.

Os comandos pv e progress fornecem algumas estatísticas e um pequeno feedback visual. Você pode ver o quão perto o processo está para ser concluído. Isso significa que você obtém um ETA para seus processos em execução. Comparado com olhar para um cursor, isso ganha sem dúvida.

Instalando PV

Você deve instalar o pv.

Para instalar o pv no Ubuntu, use este comando:

sudo apt-get install pv

Para instalar o pv no Fedora, use este comando:

sudo dnf install pv

Para instalar o pv no Manjaro, use este comando:

sudo pacman -Syu pv

Usando pv

pv significa visualizador de tubo. A tubulação deve estar envolvida no comando em algum lugar. Aqui está um exemplo em que estamos canalizando uma imagem ISO por meio do zip para fazer um arquivo zip compactado do ISO.

Para tornar os comandos mais lentos o suficiente para que uma captura de tela pudesse ser obtida, alguns dos arquivos nos exemplos usados ​​para este artigo foram armazenados em um USB externo antigo e lento chamado SILVERXHD.

pv /media/dave/SILVERXHD/gparted-live-1.0.0-1-amd64.iso | zip > gparted.zip

pv /media/dave/SILVERXHD/gparted-live-1.0.0-1-amd64.iso |  zip> gparted.zip em uma janela de terminal ”largura =” 646 ″ altura = ”77 ″ onload =” pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon (this); ”  onerror = ”this.onerror = null; pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon (this);”> </p>
<div style=

As informações fornecidas por pv podem ser vistas na linha inferior do visor.

Da esquerda para a direita, as informações exibidas são:

Os dados foram transferidos até agora.
O tempo passou até agora.
A taxa de transferência de dados (taxa de transferência).
Uma barra de progresso e uma figura de porcentagem concluída.
O tempo estimado restante antes da conclusão (ETA).

Copiando um arquivo com pv

Para copiar um arquivo com saída de pv, use este comando:

pv /media/dave/SILVERXHD/gparted-live-1.0.0-1-amd64.iso > gparted.iso

Recebemos um relatório de progresso conforme o arquivo é copiado.

Copiando vários arquivos com pv

Para copiar vários arquivos e pastas com PV, precisamos usar um pequeno truque. Usamos tar para mover os arquivos para nós.

tar -c help-files/ | pv | tar -x -C Documents/

O tar -c help-files / parte do comando instrui tar para criar (-c) um arquivo dos arquivos na pasta help-files. Isso é canalizado por meio de pv para que tenhamos uma exibição do progresso. Em seguida, ele é canalizado de volta para o tar para a última parte do comando. O arquivo é extraído (-x) e o diretório é alterado (-C) para Documentos antes da extração.

Assim, os arquivos e pastas que estão nos arquivos de ajuda são copiados para a pasta Documentos, com uma exibição do andamento.

A saída é um pouco diferente desta vez.

Não recebemos um HEC. A barra de progresso agora exibe um indicador móvel. Mostra que o processo está ativo, mas não cresce da esquerda para a direita como uma barra de progresso tradicional. pv se limita a exibir as informações que pode extrair do processo que está sendo canalizado.

Usando pv e tar para criar um arquivo

Copiar arquivos com pv e tar não nos deixa com um arquivo compactado. Uma espécie de arquivo “virtual” é criado pelo tar, que é alimentado diretamente no tar para extrair os arquivos. Se nosso objetivo é copiar arquivos, está feito. Mas e se quisermos criar um arquivo morto?

Ainda podemos usar o tar para criar um arquivo compactado e obter um relatório de progresso da pv. As opções usadas com tar são -c (criar arquivo), -z (compactar com gzip) e -f (nome do arquivo do arquivo).

Observe que estamos usando – como o nome do arquivo, o que faz com que o tar use stdout, e para gravar sua saída na janela do terminal. Não vemos essa saída porque ela é canalizada por meio de pv.

  Como salvar DVDs e Blu-rays no seu PC Linux

O nome real do arquivo será o nome do arquivo para o qual canalizamos a saída de pv. Neste caso, é “help-files.tgz”.

tar -czf - ./help-files/ | pv > help-files.tgz

tar -czf - ./help-files/ |  pv> help-files.tgz em uma janela de terminal ”largura =” 646 ″ altura = ”57 ″ onload =” pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon (this); ”  onerror = ”this.onerror = null; pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon (this);”> </p>
<p> Obtemos os mesmos indicadores de progresso de antes, e o arquivo é criado para nós. </p>
<p> < p> <img src =

As opções de exibição pv

Existem várias opções que você pode usar com pv para alterar os detalhes de seu relatório.

Se você usar qualquer uma dessas opções, todas as outras opções serão desativadas. Portanto, se você quiser ter três das opções de exibição em uso, precisará especificar essas três opções.

Usar pv sem nenhuma opção é o mesmo que usar as opções -pterb.

-p: exibe a porcentagem concluída. Esta é a barra de progresso e a porcentagem concluída.
-t: exibe o tempo decorrido.
-e: exibe o ETA.
-r: exibe a taxa de transferência de dados.
-b: exibe a contagem de bytes (dados transferidos até agora).
-n: exibe a porcentagem como um número inteiro. Isso imprime a porcentagem concluída como um número inteiro, com cada nova atualização em uma nova linha.

Vamos repetir o último comando e passar a opção -p (porcentagem concluída) para pv.

tar -czf - ./help-files/ | pv - p > help-files.tgz

tar -czf - ./help-files/ |  pv - p> help-files.tgz em uma janela de terminal ”largura =” 646 ″ altura = ”57 ″ onload =” pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon (this); ”  onerror = ”this.onerror = null; pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon (this);”> </p>
<p> Isso desativa todas as outras opções de exibição.  pv fornece apenas o elemento de porcentagem concluído. </p>
<p> Como o pv não obtém um valor de porcentagem concluído do tar, a barra de progresso é substituída por um indicador móvel.  Não há valor percentual. </p>
<p> <img src =

Usando pv com wc

Podemos usar o pv para enviar um arquivo de texto (ou arquivos) para o wc. wc então contará os retornos de carro, caracteres e palavras e pv nos dará um relatório de progresso.

Aqui, estamos canalizando todos os arquivos “.page” do diretório de arquivos de ajuda para o wc.

Quando wc terminar, podemos ver nossa contagem de retornos de carro (linhas), caracteres e palavras de todos os arquivos “.page” na pasta de arquivos de ajuda.

Instalando o Comando de progresso

O comando de progresso dá o mesmo tipo de informação útil como pv, mas funciona com um conjunto específico de comandos do Linux.

Para instalar o progresso no Ubuntu, use este comando:

sudo apt-get install progress

Para instalar o progresso no Fedora, use este comando:

sudo dnf install progress

Para instalar o progresso no Manjaro, use este comando:

sudo pacman -Syu progress

O progresso de comandos funciona com

Digitar progresso em uma janela de terminal e pressionar Enter fornecerá uma lista dos comandos com os quais o progresso funciona.

progress

Usando Progress With Pipes

Existem duas técnicas que podemos usar para monitorar os comandos com o progresso. A primeira é usar canos.

  4 melhores alternativas para o Libre Office no Linux

O comando tar está na lista de comandos suportados que o progresso pode monitorar, então vamos usar o tar.

As opções que usaremos são as opções padrão -c (criar arquivo), -z (compactar com gzip) e -f (nome do arquivo). Vamos criar um arquivo compactado de tudo na pasta de arquivos de ajuda, e o arquivo será nomeado “help.tgz”.

Estamos canalizando isso para o andamento e usando a opção -m (monitorar) para que o andamento continue relatando o processo até que seja concluído.

tar -czf help.tgz ./help-files/ | progress -m

A janela do terminal mostrará o progresso do comando tar conforme ele cria o arquivo.

À medida que cada arquivo é processado, ele é listado, com as seguintes informações:

O ID do processo.
O nome do processo.
Porcentagem concluída.
Dados processados ​​e tamanho total do arquivo.
Taxa de dados (taxa de transferência).
Tempo restante estimado (ETA).

Você pode se surpreender ao ver um segundo conjunto de dados aparecer. Este primeiro conjunto de dados é para tar. O segundo é para gzip. O tar chama o gzip para realizar a compressão. Como o gzip está na lista de comandos com suporte, relatórios de progresso sobre ele.

Usando o progresso no modo de monitoramento contínuo

Você pode usar o progresso em um modo de monitor contínuo em tempo real usando a opção -M (monitor).

Digite o seguinte comando em uma janela de terminal:

progress -M

o progresso relatará que não há comandos em execução para monitorar. Mas você não voltou para a linha de comando. o progresso espera até que um comando que ele pode monitorar seja iniciado. Em seguida, ele começará a gerar relatórios sobre ele automaticamente.

Em outra janela de terminal, digite um comando que esteja na lista de comandos que o progresso pode monitorar.

Vamos usar o gato. Os comandos que terminam muito rapidamente não serão registrados com o progresso, portanto, listaremos o conteúdo de um arquivo de texto muito longo.

cat words.page

Na janela do terminal com o progresso, você verá as estatísticas do comando cat conforme ele é executado e funciona até a conclusão.

Quando cat termina de listar, o progresso do arquivo retorna ao seu estado de espera.

Cada vez que um dos comandos sobre os quais ele pode relatar executa uma tarefa considerável, o progresso o monitora e relata automaticamente.

Isso é muito legal.

100% concluído

Elimine as suposições de se perguntar como um comando de longa duração está se saindo e pare de contemplar o cursor com PV e progresso.