Linux: Visualize o progresso de uma acção com o comando pv

44 Comentários

A shell Linux é onde reside todo o poder de interacção com o sistema. Apesar de permitir realizar as mais diversas acções, muita das vezes o utilizador não tem a noção do tempo necessário para que uma determinada tarefa (ex. copia de ficheiros, compactação, etc) seja finalizada.

Mas para quem pretender visualizar o progresso de uma acção há um comando para tal. Vamos conhecer o pv.

pv


Quando fazemos backups, copiamos grandes ficheiros normalmente não temos a noção de quanto tempo falta para que a acção seja terminada. Mas há um comando para tal!

Usando o comando pv é possível ver o progresso de uma tarefa no sistema assim como:

  • Tempo que falta para terminar
  • informação do tempo que falta em %
  • Throughput rate Actual
  • Total de dados transferidos
  • ETA (tempo estimado)

Como instalar o comando pv?

A instalação do comando pv é bastante simples. Para isso basta abrir o terminal (tutorial feito usando a distro Debian) e inserir o seguinte comando:

apt-get install pv

Como usar?

A utilização deste comando é bastante simples pois basta que se use o pv antes de qualquer outro comando. exemplo:

pv /var/log/syslog | zip > syslog.zip

pv_00

Mas o o pv pode ser usado das mais diversas formas. Para isso podem ver o manual do comando escrevendo man pv

pv_01

O comando pv não é fundamental no sistema mas é importante para quem pretender ter a noção de tempo de realização de uma tarefa. Para quem precisa, fica a sugestão.

Comentários

44

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *

  1. Avatar de Rui
    Rui

    É um substituto do cat?

    1. Avatar de Pedro Pinto

      Não tem nada a ver 🙂

      1. Avatar de Rui
        Rui

        Depois de ler a manpage do pv, fiquei a saber que sim, faz o mesmo que o comando cat, que é precisamente abrir um ficheiro (ou varios) e enviar para o stdout. (É para isso que o cat serve, apesar da maioria dos usos dados pelas pessoas, é esparregar ficheiros de texto na consola)

        Só que este, mostra o progresso na consola.

        Aiai, 😛

        1. Avatar de Pedro Pinto

          Vai lá ler bem, não é bem isso 🙂

          1. Avatar de Rui
            Rui

            Ok, concordamos em discordar, mas eu sei que tenho razão 😀

          2. Avatar de Pedro Pinto

            Ok ok, amigos à mesma 😀 não fosse essa a filosofia do mundo Linux 😀

          3. Avatar de Ricardo Pontes
            Ricardo Pontes

            Na verdade o Rui até tem razão.

          4. Avatar de Pedro Pinto

            Não é na verdade…na prática pode fazer algumas coisa do cat mas não é esse o objectivo do pv. http://ss64.com/bash/pv.html

          5. Avatar de Baptista Batos
            Baptista Batos

            A base de operação é a mesma!

            Tiradas das manpages:

            cat: The cat utility reads files sequentially, writing them to the standard output

            pv: pv will copy each supplied FILE in turn to standard output (- means standard input), or if no FILEs are specified just standard input is copied. This is the same behaviour as cat(1).

            Até diz que faz a mesma coisa que o cat, a diferença é que imprime no ecrã…

            Pedro Pinto, no UNIX, existe o standard input, standard output, standard error.

            Provavelmente o pv usa o standard output para fazer o mesmo que faz o cat, e o standard error, para mostrar no ecrã…

            Muitas aplicações, quando você faz applicacao > out.txt, você verá que o texto normal, aparece no ficheiro, mas os erros (se o programador usar o standard error), não aparecem.

            Na shell, se você não apontar nada, é que aparece no ecrã o standard output e o standard error, e não se distinguem em nada…

          6. Avatar de lmx
            lmx

            pessoal…

            O Pedro tem razão!
            Pelo facto evidente de copiar de algum lado para o stdout não quer dizer que seja um cat, porque além dessa funcionalidade este comando gasta muito mais recursos que o cat , para outras tarefas de informação…

            Ou seja não é um comando para fazer a mesma coisa que o cat!

            Por essa vossa logica quase que consigo dizer que o vi faz o mesmo que o cat, e já agora outros milhões de aplicações , o que não é verdade!

            São comandos para situações diferentes, que consoante o que queremos, e consoante os recursos que quermoes gastar usamos um ou o outro..

  2. Avatar de Mário Pinto
    Mário Pinto

    Dá muito jeito para ver o progresso ao flashar imagens com o dd.
    Utilizo este exemplo muitas vezes [CUIDADO COM O DD, estão avisados!]:
    dd if=OpenELEC-RPi.arm-5.0.8.img bs=4M | pv | sudo dd of=/dev/sdX

    1. Avatar de Pedro
      Pedro

      Para o DD uso “kill -USR1 PID-do-DD” 😀

      1. Avatar de nope
        nope

        aí está !!!

    2. Avatar de Rui
  3. Avatar de cc
    cc

    desconhecia. mto obrg pelo artigo!

  4. Avatar de Whatever
    Whatever

    Utilizo muitas vezes para realizar cópias integrais de discos (dd) e seguir o progresso da operação

  5. Avatar de J.C.Lopes
    J.C.Lopes

    Mas quem é que copia coisas pelo terminal?

    1. Avatar de Pedro
      Pedro

      Utilizador ubuntu, certo?

      1. Avatar de Baptista Batos
        Baptista Batos

        LOOOL!

    2. Avatar de RaCcOn
      RaCcOn

      Muita gente, por exemplo eu trabalho para ai 80% do tempo no terminal.

    3. Avatar de AlexAlex
      AlexAlex

      Para quem tem prática na utilização do terminal é imensamente mais rápido/produtivo do que ficar aos “clicks” por várias janelas diferentes.

      1. Avatar de nope
        nope

        +1 . Só sabe quem conhece e o resto é treta …

  6. Avatar de Modem
    Modem

    Não percebi nada da forma de utilização…
    Quem é que pode explicar o comando
    pv /var/log/syslog | zip > syslog.zip

    Como é que se pode usar o pv para uma cópia por exemplo?

    1. Avatar de Bernardo
      Bernardo

      penso que seja
      pv mv testfile testfile2

      1. Avatar de Baptista Batos
        Baptista Batos

        pv original > copia

      2. Avatar de Rui
        Rui

        Não, é simples:

        pv ficheiro1 > ficheiro2

    2. Avatar de Junior
      Junior

      Mostra o tempo de compactacao do syslog.
      Simples.

      1. Avatar de Pedro Pinto

        Exacto, o tempo que vai ser necessário para compactar o ficheiro /var/log/syslog para syslog.zip

  7. Avatar de Realista
    Realista

    A última vez que mexi numa linha de comandos foi para escrever a palavra WIN para o windows 3.11 correr em 1994/5…

    Estamos em 2015 e o Linux ainda necessita de comandos na promp.

    1. Avatar de Xico
      Xico

      Tu nao és realista, tu és pouco esperto.

      1. Avatar de Rui
        Rui

        É muito hipocrita…

        Quando o assunto é unix, vem dizer que ninguém precisa de linhas de comandos.

        Quando o assunto é Apple, diz que o iPad não presta, porque não corre aplicações desktop.

        Ou seja, para ele, é Windows, já que é a única coisa que dá para correr os joguinhos dele…

    2. Avatar de Pituína
      Pituína

      Ve-se logo que nao és sys admin

      1. Avatar de nope
        nope

        Se soubesse, por exemplo, que grande parte da internet é assegurada por linhas de comandos, não dizia isto …

    3. Avatar de Norberto
      Norberto

      Reparaste que a Microsoft tem apostado cada vez mais na interface shell? 😉 Windows SERVER CORE 😉

    4. Avatar de RaCcOn
      RaCcOn

      Para beginners,
      Sim nao precisas da linha de comandos para quase nada…

      1. Avatar de nope
        nope

        Ya … os beginners curtem bués. Quando és avançado clicas em botões …

    5. Avatar de YaBa
      YaBa

      Tens toda a razão, 2015, e a Microsoft só anda agora a promover a PowerShell à força toda. Porque será?

      Faça-se a distinção entre utilizador comum e administradores de sistemas e outros do ramo, se és do primeiro grupo, acho perfeitamente normal que não precises de abrir a linha de comados. Gozar só porque sim, é um bocado imbecil.

      1. Avatar de nope
        nope

        +1 Para quem percebe que interfaces gráficos são traduzidos em instruções e cujas instruções são, muitas vezes, mais fáceis de programar por comandos …

    6. Avatar de nope
      nope

      Grande parte das vezes os interfaces gráficos são limitados e só atrapalham em processos batch. Principalmente quando queres “tocar” em vários ficheiros com um certo padrão. Aí tens toda a flexibilidade de uma linha de comandos, que em poucas instruções consegue fazer o que não consegues com variados clicks em botões. Só sabe quem conhece …

  8. Avatar de luis verdasca
    luis verdasca

    Dá para ver o progresso? Sendo assim, deve ser a unica maneira de o ver em Portugal.
    A tradução de “progress” é “evolução” e não “progresso”, pelo menos neste contexto.

  9. Avatar de kokoloko
    kokoloko

    Porque é que nunca indicas o site de onde tiras as tuas inspirações para as dicas que
    colocas aqui? Esta dica vem publicada no site da Tecmint em 02-10-2015:
    http://www.tecmint.com/monitor-copy-backup-tar-progress-in-linux-using-pv-command/
    Não indicar fonte é intelectualmente desonesto… 🙂

    1. Avatar de nope
      nope

      Olha os “podres” … o pessoal “intelectualmente desonesto” não gosta … Porquê puxar pela cabeça quando já está feito ?

      Uma pergunta: justifica o ordenado lol ?!? dêem-me um “poleiro” destes que eu faço artigos interessantes e ORIGINAIS todos os dias. Fucking “really” yeah !!!