Commandes de base

pv : Avoir des informations sur le temps d'une tâche

Cet article a été mis à jour, vous consultez ici une archive de cet article!
Table des matières

Introduction



PV - pour Pipe Viewer - est un outil qui permet le suivi des données à travers un pipe. Il peut être inséré dans n'importe quel pipe normal, entre deux processus pour donner une indication visuelle de la rapidité avec laquelle les données transitent.
Il offre une estimation du temps restant.

Installation



L'outil pv n'est pas forcément inclus dans votre distribution Linux.

Pour Gentoo : sys-apps/pv
Pour Red Hat et dérivées : pv (dans EPEL)
Pour Debian, Fedora : pv dans les dépôts

Utilisation de pv



Utilisation : pv [OPTIONS] [FICHIER]...
Concatène FICHIER(s), ou l'entrée standard, sur la sortie standard
avec monitorage.
De manière simple, c'est équivalent à la commande cat avec une barre de progression
-p, --progress affiche la barre de progression
-t, --timer affiche le temps écoulé
-e, --eta affiche l'heure approximative de l'achèvement de
la tâche
-r, --rate affiche le taux de tranfert des données
-a, --average-rate show data transfer average rate counter
-b, --bytes affiche le nombre d'octets transférés
-f, --force imprime vers la sortie d'erreur même si ce n'est
pas un terminal
-n, --numeric imprime en pourcentage, pas les informations
visuelles
-q, --quiet n'afficher aucune information de transfert
-c, --cursor utiliser les séquences d'échappements de
positionnement de curseur
-W, --wait ne rien afficher avant qu'au moins un octet soit
tranféré
-s, --size TAILLE ajuste la taille estimée des données à TAILLE
octets
-l, --line-mode compte les lignes au lieu des octets
-i, --interval SEC mise-à-jour toute les SEC secondes
-w, --width LARGEUR présumer la largeur du terminal à LARGEUR
caractères
-H, --height HAUTEUR présumer la hauteur du terminal à HAUTEUR lignes
-N, --name NOM préfixer les informations visuelles avec NOM
-L, --rate-limit TAUX limite le taux de transfer à TAUX octets par
seconde
-B, --buffer-size OCTETS Utiliser une mémoire tampon de OCTETS octets
-R, --remote PID mettre-à-jour la configuration du processus PID
-h, --help afficher cette aide puis quitter
-V, --version afficher la version puis quitter


Quelques exemples



Copier un fichier avec progression pv



Pour copier un fichier, on va utiliser uniquement la commande pv :
Code BASH :
pv fic-source > fic-dest

Ce qui donne par exemple :
Code BASH :
pv Fedora-Cinnamon-Live-x86_64-24_Beta-1.6.iso > copie.iso
1.28GiO 0:00:02 [ 529MiB/s] [==========================>] 100%            


Créer une clé USB bootable avec dd et pv



Pour créer une clé USB (/dev/sdc) bootable d'une ISO Linux, la commande est :
Code BASH :
dd if=fichier-image-linux.iso of=/dev/sdc

Dorénavant, on peut utiliser avec pv pour avoir une progression de l'avancement de la copie :
Code BASH :
pv fichier-image-linux.iso | dd of=/dev/sdc

Ce qui donne en fin de copie ceci : (Imaginer le curseur ====> avancer au cours de la copie)
Code BASH :
pv fichier-image-linux.iso | dd of=/dev/sdc
1,41GiO 0:00:54 [26,5MiB/s] [=======================================================>] 100%            
2965504+0 enregistrements lus
2965504+0 enregistrements écrits
1518338048 octets (1,5 GB) copiés, 54,5804 s, 27,8 MB/s
 


Créer une archive compressée .tar.gz



Coupler tar et pv est possible, utiliser comme ceci :
Code BASH :
tar -czf - dossier | pv > archive.tar.gz


Décompresser une archive .tar.gz



Pour décompresser, même principe que la compression, mais à l'envers :
Code BASH :
pv sox.tar.gz |tar xzf -


Test funny !



Alors, à quelle vitesse votre ordinateur peut lire /dev/zero ?
Code BASH :
pv /dev/zero > /dev/null
315GiO 0:00:22 [14,4GiB/s] [                              <=>                                        ]


Importer une base de données



Si la base est grosse, l'utilisation de pv peut être pratique. Là, j'importe le fichier bdd.sql dans la base de données nommée bdd :
Code BASH :
pv bdd.sql | mysql bdd

En cours de route on observe :
Code BASH :
pv bdd.sql | mysql bdd
34,5MiO 0:00:08 [ 6,3MiB/s] [====================>                          ] 45% ETA 0:00:09

Exporter une base de données



Si la base est grosse, l'utilisation de pv peut être pratique. Là, j'exporte la base de données bdd dans le fichier bdd.sql :
Code BASH :
mysqldump bdd | pv > bdd.sql