GNU/Linux >> Tutoriels Linux >  >> Linux

Comment surveiller la progression des données dans un tube à l'aide de la commande "pv"

Imaginez ce scénario. Vous essayez de copier un fichier volumineux d'un répertoire à un autre ou d'un système à un autre via la ligne de commande. Comme vous le savez probablement, vous ne verrez aucune indication de tâche de copie si vous utilisez la commande 'cp'. Vous verrez juste un écran vide. Vous ne pouvez pas être sûr que le processus de copie est en cours ou non tant que le processus de copie n'est pas terminé. Dans de tels cas, vous pouvez utiliser pv commande pour surveiller la progression des données. Le pv, acronyme de p ipe v iewer, la commande permet à un utilisateur de voir la progression des données à travers un pipeline, en donnant les informations suivantes :

  • temps total écoulé,
  • pourcentage réalisé (avec barre de progression),
  • taux de débit actuel,
  • total des données transférées,
  • et heure d'arrivée prévue.

Dans ce bref tutoriel, nous verrons comment et où utiliser la commande pv pour surveiller la progression des données dans les systèmes de type Unix.

Télécharger - Cheat Sheet gratuit :"Linux Command Line Cheat Sheet"

Installer pv sous Linux

La plupart des distributions Linux modernes sont préinstallées avec la commande pv. Juste au cas où s'il n'est pas déjà installé, vous pouvez l'installer en exécutant la commande suivante à partir de votre terminal en fonction de la distribution Linux que vous utilisez.

Sur Arch Linux, Antergos, Manjaro Linux :

$ sudo pacman -S pv

Sur RHEL, CentOS, Fedora :

$ sudo yum install pv

Ou,

$ sudo dnf install pv

Sur Debian, Linux Mint, Ubuntu :

$ sudo apt-get install pv

Sur SUSE, ouvrez SUSE :

$ sudo zypper in pv

Maintenant, nous avons installé pv. Laissez-moi vous montrer quelques exemples.

Surveiller la progression des données via un canal à l'aide de la commande 'pv'

Regardez la sortie de la commande suivante :

$ cp CentOS7.iso Downloads/

commande cp

Cette commande copie l'image ISO CentOS 7 dans Téléchargements répertoire dans mon système local. Comme vous le voyez dans la sortie ci-dessus, aucune barre de progression n'est affichée. Vous ne verrez que le curseur clignoter. Nous ne savons pas combien de temps le processus de copie prendra. Cela peut parfois être ennuyeux car nous ne voyons aucun signe de la fin de cette commande. C'est là que la commande pv vient en aide. La commande pv vous montrera la progression des commandes Linux et vous montrera quand la commande Linux se terminera. Ainsi, vous pouvez quitter le terminal et effectuer d'autres tâches et revenir lorsque la tâche est terminée.

Maintenant, faisons la même chose avec pipe viewer (pv), et voyons quelle est la sortie.

$ pv CentOS7.iso > Downloads/centos.iso

Surveiller la progression des données via un canal à l'aide de la commande 'pv'

Vous voyez, vous voyez la différence ? Comme je l'ai dit, la commande pv affiche le temps total écoulé, le pourcentage terminé (avec barre de progression), le débit actuel, le total des données transférées et l'ETA.

Laissez-moi vous donner d'autres exemples.

Nous pouvons limiter le taux de transfert de données en utilisant -L commutateur comme indiqué dans l'exemple ci-dessous.

$ pv -L 2m CentOS7.iso > Downloads/centos.iso

La commande ci-dessus limitera le taux de transfert de données à 2 Mo par seconde . Regardez la sortie suivante.

Limitez le taux de transfert de données à l'aide de la commande pv

Si vous avez plusieurs fichiers ou répertoires, vous pouvez utiliser pv avec la commande tar comme indiqué ci-dessous :

$ tar c Notebooks/ | pv | tar x -C Documents/

La commande ci-dessus va compresser le répertoire Notebooks, le copier dans le répertoire Documents et enfin extraire le contenu.

Voici un autre exemple. Cette commande créera une archive du fichier CentOS7.iso et enregistrez-le dans le répertoire de travail actuel.

$ pv CentOS7.iso | zip > centos.zip

créer un fichier d'archive à l'aide de la commande pv

Vous pouvez également utiliser pv avec la commande dd pour copier des fichiers entre des répertoires comme ci-dessous. Cette commande copie le fichier CentOS7.iso du répertoire actuel vers le répertoire Téléchargements.

$ dd if=CentOS7.iso | pv | dd of=Downloads/centos7.iso

utilisez la commande pv avec la commande dd pour copier des fichiers entre les répertoires

Une autre commande utile pour afficher la progression des données est dialog . Nous pouvons l'utiliser avec la commande pv pour afficher la progression des données comme ci-dessous.

$ tar -czf - Official/ | (pv -n > mybackup.tgz) 2>&1 | dialog --gauge "Compressing files, please wait..." 10 70 0

Exemple de résultat :

utilisez la commande dialog avec la commande pv pour afficher la progression des données

Pour plus de détails, reportez-vous aux pages de manuel.

$ man pv

Consultez également notre guide précédent pour transférer rapidement des fichiers volumineux entre deux systèmes distants via le réseau à l'aide de netcat. , goudron , et vp commandes dans les systèmes d'exploitation Linux et Unix.

  • Comment transférer rapidement des fichiers volumineux sur le réseau sous Linux et Unix

Mise à jour :

La barre de progression des commandes "cp" et "mv" peut être facilement ajoutée à l'aide d'un correctif nommé "Advanced Copy" . Pour plus de détails, consultez le lien suivant.

  • Copie avancée – Ajouter une barre de progression aux commandes cp et mv sous Linux

Linux
  1. Comment créer une base de données dans MySQL à l'aide de la ligne de commande

  2. Comment extraire le fichier tar.gz sous Linux à l'aide de la ligne de commande

  3. Comment supprimer un utilisateur sous Linux à l'aide de la ligne de commande

  4. Comment compresser et extraire des fichiers à l'aide de la commande tar sous Linux ?

  5. Comment connecter un hôte distant à l'aide de la commande ssh

Comment rejouer les sessions de terminal enregistrées à l'aide de la commande Scriptreplay

Comment redémarrer Debian en utilisant la ligne de commande

Comment utiliser la commande nmap

Comment installer Google Chrome sur Ubuntu 18.04 en utilisant la ligne de commande ?

Comment écrire facilement des commandes à l'aide de l'applet de commande Powershell Show-command

Comment télécharger des fichiers dans Rocky Linux 8 sur la ligne de commande à l'aide de wget