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

Conteúdo

Prompt de comando do terminal Linux em um laptop

Em vez de voar às cegas, usar Linux pv e progress comandos para acompanhar o progresso de um comando. Esses utilitários lhe darão barras de progresso para comandos que regularmente não têm nenhum. Você também verá um tempo estimado até a conclusão.

Se você estiver em um voo de longo curso em um avião sem telas de vídeo nas costas dos assentos, não é fácil saber a que distância você está da sua viagem. Você sabe quando você decolou. Você sabe quanto tempo o vôo deve levar. Mas, Como você sabe se está no caminho certo, na hora ou muito tarde? Se você não quer ver o filme durante o vôo, você geralmente pode mudar a tela do vídeo para mostrar um mapa com a posição do seu avião nele. Você também obtém algumas estatísticas, como a hora prevista de chegada (E), o que é ótimo.

Iniciar um comando a partir da janela do terminal às vezes pode parecer um voo de longo curso sem uma tela de vídeo. Não tem nada para indicar se está tudo bem ou se o procedimento travou, nem o quão perto está da conclusão. Um cursor piscando não é muito informativo.

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

Instalação fotovoltaica

Você deve instalar pv.

Instalar pv no Ubuntu use este comando:

sudo apt-get install pv

Instalar pv no Fedora use este comando:

sudo dnf install PV

Instalar pv em Manjaro use este comando:

sudo pacman -Syu pv

Usando pv

pv Representa visualizador de tubo. O pipeline deve estar envolvido no comando em algum lugar. Aqui está um exemplo em que estamos canalizando uma imagem ISO através de zip para fazer um arquivo compactado do ISO.

Para desacelerar os comandos o suficiente para poder fazer uma captura de tela, alguns dos arquivos de amostra usados ​​para esta postagem foram armazenados em um USB externo antigo e lento chamado SILVERXHD.

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

A informação pv nos dá pode ser visto na linha inferior da tela.

De esquerda a direita, a informação exibida é:

  • Dados transferidos até agora.
  • O tempo passou até agora.
  • A taxa de transferência de dados (Desempenho).
  • Uma barra de progresso e um número percentual completo.
  • O tempo estimado restante antes da conclusão (E).

Copie 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 um arquivo com pv em uma janela de terminal você

Copie vários arquivos com pv

Para copiar vários arquivos e pastas com pv precisamos usar um pequeno truque. Nós usamos tar para mover os arquivos para nós.

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

a tar -c help-files/ parte das instruções de comando tar Criar (-c) um arquivo dos arquivos na pasta de arquivos de ajuda. Isso é canalizado através de pv para que tenhamos uma visualização do progresso. É então canalizado de volta para tar para a última parte do comando. O arquivo é extraído (-x) e o diretório é alterado (-C) a Documentos antes da extração.

Por isso, os arquivos e pastas que estão nos arquivos de ajuda são copiados para a pasta Documentos, com uma tela de progresso.

O resultado é um pouco diferente desta vez.

Não recebemos um HEC. A barra de progresso agora mostra um indicador móvel. Mostra que o procedimento está ativo, mas não cresce da esquerda para a direita como uma barra de progresso tradicional. pv limita-se a mostrar as informações que pode extrair do procedimento 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. Uma espécie de arquivo “virtual” é criado por tar, que é devolvido diretamente para tar para extrair os arquivos. Se nosso objetivo é copiar arquivos, isso é alcançado. Mas, E se quisermos criar um arquivo morto?

Ainda podemos usar tar para criar um arquivo e obter um relatório de progresso de pv. Alternativas usadas com tar estão -c (criar arquivo), -z (comprimir com gzip) e -f (nome do arquivo).

Observe que estamos usando - como o nome do arquivo, quais causas tar usar stdoute escrever sua saída na janela do terminal. Não vemos essa saída porque é canalizada através pv.

O nome real do arquivo será o nome do arquivo a partir do qual canalizamos a saída pv dentro de. Para este caso, isto é “help-files.tgz”.

tar -czf - ./arquivos de ajuda / | pv > help-files.tgz

Recebemos os mesmos indicadores de progresso de antes e o arquivo é criado para nós.

RELACIONADO: Como compactar e extrair arquivos usando o comando tar no Linux

As alternativas de exibição pv

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

Se você usar qualquer uma dessas opções, todas as outras opções estão desabilitadas. Então, se você quiser ter três das alternativas de exibição em uso, você deve especificar essas três opções.

Usando pv sem qualquer opção é o mesmo que usar o -pterb opções.

  • -pag: mostra a percentagem cheio. Esta é a barra de progresso e a figura de porcentagem concluída.
  • -t: mostra o decorrido clima.
  • -mim: mostra a E.
  • -r: mostra a índice transferência de dados.
  • -B: mostra a byte contar (dados transferidos até agora).
  • -Norte: mostra a porcentagem como um todo. 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 o -p (por cento completo) opção para pv.

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

Isso desativa todas as outras opções de exibição. pv fornece apenas a porcentagem do item completo.

Devido a que pv não obtém um valor percentual completo de tar, a barra de progresso é substituída por um indicador móvel. Não há porcentagem.

Usando pv com banheiro

Podemos usar pv canalizar um arquivo de texto (ou arquivos) uma wc. wc Em seguida, ele irá contar os retornos do carro, caracteres e palavras e pv nos dará um relatório de progresso.

Aqui estamos canalizando todos os arquivos “.página” no diretório de arquivos de ajuda em wc.

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

Instalação do comando de progresso

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

Instalar progress no Ubuntu, use este comando:

sudo apt-get install progresso

Instalar progress no Fedora, use este comando:

progresso da instalação do sudo dnf

sudo dnf instala o progresso em uma janela de terminal

Instalar progress em Manjaro, use este comando:

sudo pacman -Syu progress

O progresso do comando funciona com

Digitando progress em uma janela de terminal e pressionar Enter lhe dará uma lista dos comandos que progress Funciona com.

progresso

Usando o progresso com tubos

Existem duas técnicas que podemos usar para monitorar comandos com progress. O primeiro é usar canos.

a tar comando está na lista de comandos suportados que progress pode monitorar, portanto, vamos usar tar.

As alternativas que usaremos são as padrão -c (criar arquivo), -z (comprimir com gzip) e -f (nome do arquivo) opções. Vamos criar um arquivo compactado de tudo o que está na pasta de arquivos de ajuda, e o arquivo se chamará "help.tgz".

Estamos canalizando isso para progress e usando o -m (monitor) opção como esta progress continua a relatar o procedimento até que esteja completo.

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

A janela do terminal exibirá o progresso do tar comando ao criar o arquivo.

À medida que cada arquivo é processado, está listado com as próximas informações:

  • O ID do procedimento.
  • O nome do procedimento.
  • Porcentagem concluída.
  • Dados processados ​​e tamanho total do arquivo.
  • Taxa de dados (Desempenho).
  • Tempo estimado restante (E).

Você pode se surpreender ao ver um segundo conjunto de dados aparecer. Este primeiro conjunto de dados é para tar. O segundo é para gzip. tar chamadas gzip para realizar compressão. Devido a que gzip está na lista de comandos suportados, progress relatórios sobre isso.

Usando o progresso no modo de monitoramento contínuo

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

Digite o seguinte comando em uma janela de terminal:

progresso -M

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

Em outra janela de terminal, escreva um comando que está na lista de comandos que o progresso pode monitorar.

Vamos usar cat. Comandos que terminam muito rápido não serão registrados com progress, então vamos listar o conteúdo de um arquivo de texto muito grande.

cat words.page

Na janela do terminal com progress no, você verá as estatísticas de cat comando enquanto é executado e funciona até a conclusão.

Quando cat termine de listar o arquivo progress retorna ao seu estado de espera.

Cada vez que um dos comandos que você pode relatar realiza uma tarefa considerável, progress irá monitorar e relatar você automaticamente.

Isso é muito bom.

100% completado

Elimine as suposições de se perguntar como um comando de longa execução está funcionando e pare de olhar para o cursor com pv e progress .

setTimeout(função(){
!função(f,b,e,v,n,t,s)
{E se(f.fbq)Retorna;n = f.fbq = função(){n.callMethod?
n.callMethod.apply(n,argumentos):n.queue.push(argumentos)};
E se(!f._fbq)f._fbq = n;n.push = n;n.loaded =!0;n.version = ’2.0′;
n.queue =[];t = b.createElement(e);t.async =!0;
t.src = v;s = b.getElementsByTagName(e)[0];
s.parentNode.insertBefore(t,s) } (window, documento,'roteiro',
‘Https://connect.facebook.net/en_US/fbevents.js ’);
fbq('iniciar', ‘335401813750447’);
fbq('acompanhar', ‘PageView’);
},3000);

Assine a nossa newsletter

Nós não enviaremos SPAM para você. Nós odiamos isso tanto quanto você.