Au lieu de voler à l’aveugle, utilisez les commandes Linux pv et progress pour suivre la progression d’une commande. Ces utilitaires vous donneront des barres de progression pour les commandes qui n’en ont normalement pas. Vous verrez également un temps estimé jusqu’à la fin.
Si vous effectuez un vol long-courrier dans un avion sans écran vidéo dans les dossiers des sièges, il n’est pas facile de savoir à quelle distance vous en êtes. Vous savez quand vous avez décollé. Vous savez combien de temps le vol devrait durer. Mais comment savoir si vous êtes sur la bonne voie, à l’heure ou en retard? Si vous ne souhaitez pas regarder le film en vol, vous pouvez généralement basculer votre écran vidéo pour afficher une carte avec la position de votre avion dessus. Vous obtenez également des statistiques, comme une heure d’arrivée prévue (ETA), ce qui est excellent.
Lancer une commande depuis la fenêtre du terminal peut parfois ressembler à un vol long-courrier sans écran vidéo. Vous n’avez rien pour indiquer si tout va bien ou si le processus s’est bloqué, ni à quel point il est proche de l’achèvement. Un curseur clignotant n’est pas très informatif.
Les commandes pv et progress vous donnent quelques statistiques et un petit retour visuel. Vous pouvez voir à quel point le processus est proche de se terminer. Cela signifie que vous obtenez un ETA pour vos processus en cours d’exécution. Comparé à regarder un curseur, cela gagne haut la main.
Table des matières
Installation de pv
Vous devez installer pv.
Pour installer pv sur Ubuntu, utilisez cette commande:
sudo apt-get install pv
Pour installer pv sur Fedora, utilisez cette commande:
sudo dnf install pv
Pour installer pv sur Manjaro, utilisez cette commande:
sudo pacman -Syu pv
Utilisation du pv
pv signifie visionneuse de tuyaux. La tuyauterie doit être impliquée dans la commande quelque part. Voici un exemple où nous envoyons une image ISO via zip pour créer un fichier zip compressé de l’ISO.
Pour ralentir suffisamment les commandes pour qu’une capture d’écran puisse être prise, certains des fichiers des exemples utilisés pour cet article ont été stockés sur une ancienne clé USB externe lente appelée SILVERXHD.
pv /media/dave/SILVERXHD/gparted-live-1.0.0-1-amd64.iso | zip > gparted.zip
Les informations que pv nous donne peuvent être vues dans la ligne inférieure de l’affichage.
De gauche à droite, les informations affichées sont:
Les données transférées jusqu’à présent.
Le temps s’est écoulé jusqu’ici.
Le taux de transfert de données (débit).
Une barre de progression et un pourcentage terminé.
Le temps estimé restant avant l’achèvement (ETA).
Copie d’un fichier avec pv
Pour copier un fichier avec la sortie de pv, utilisez cette commande:
pv /media/dave/SILVERXHD/gparted-live-1.0.0-1-amd64.iso > gparted.iso
Nous obtenons un rapport d’avancement au fur et à mesure de la copie du fichier.
Copie de plusieurs fichiers avec pv
Pour copier plusieurs fichiers et dossiers avec pv, nous devons utiliser une petite astuce. Nous utilisons tar pour déplacer les fichiers pour nous.
tar -c help-files/ | pv | tar -x -C Documents/
La partie tar -c help-files / de la commande demande à tar de créer (-c) une archive des fichiers dans le dossier help-files. Ceci est acheminé via pv afin que nous obtenions un affichage de la progression. Il est ensuite redirigé vers tar pour la dernière partie de la commande. L’archive est extraite (-x) et le répertoire est changé (-C) en Documents avant l’extraction.
Ainsi, les fichiers et dossiers qui se trouvent dans les fichiers d’aide sont copiés dans le dossier Documents, avec un affichage de la progression.
La sortie est légèrement différente cette fois.
Nous n’obtenons pas d’ETA. La barre de progression affiche maintenant un indicateur mobile. Cela montre que le processus est actif, mais il ne se développe pas de gauche à droite comme une barre de progression traditionnelle. pv se limite à afficher les informations qu’il peut extraire du processus en cours de canalisation.
Utilisation de pv et tar pour créer une archive
La copie de fichiers avec pv et tar ne nous laisse pas avec un fichier d’archive. Une sorte d’archive «virtuelle» est créée par tar, qui est directement réinjectée dans tar pour extraire les fichiers. Si notre objectif est de copier des fichiers, c’est accompli. Mais que faire si nous voulons créer un fichier d’archive?
Nous pouvons toujours utiliser tar pour créer un fichier archive et obtenir un rapport de progression de pv. Les options utilisées avec tar sont -c (créer une archive), -z (compresser avec gzip) et -f (nom de fichier de l’archive).
Notez que nous utilisons – comme nom de fichier, ce qui oblige tar à utiliser stdout, et pour écrire sa sortie dans la fenêtre du terminal. Nous ne voyons pas cette sortie car elle est acheminée via pv.
Le nom réel de l’archive sera le nom de fichier dans lequel nous dirigerons la sortie de pv. Dans ce cas, il s’agit de «help-files.tgz».
tar -czf - ./help-files/ | pv > help-files.tgz
Les options d’affichage PV
Il existe un certain nombre d’options que vous pouvez utiliser avec pv pour modifier les détails de son rapport.
Si vous utilisez l’une de ces options, toutes les autres options sont désactivées. Donc, si vous souhaitez utiliser trois des options d’affichage, vous devez spécifier ces trois options.
Utiliser pv sans aucune option équivaut à utiliser les options -pterb.
-p: affiche le pourcentage achevé. Il s’agit de la barre de progression et du pourcentage achevé.
-t: affiche le temps écoulé.
-e: affiche l’ETA.
-r: affiche le taux de transfert de données.
-b: affiche le nombre d’octets (données transférées jusqu’à présent).
-n: affiche le pourcentage sous forme d’entier. Cela imprime le pourcentage terminé sous forme de nombre entier, avec chaque nouvelle mise à jour sur une nouvelle ligne.
Répétons la dernière commande et passons l’option -p (pourcentage terminé) à pv.
tar -czf - ./help-files/ | pv - p > help-files.tgz
Utilisation du pv avec wc
Nous pouvons utiliser pv pour diriger un fichier texte (ou des fichiers) dans wc. wc comptera alors les retours chariot, les caractères et les mots et pv nous donnera un rapport d’avancement.
Ici, nous envoyons tous les fichiers «.page» du répertoire help-files vers wc.
Lorsque wc est terminé, nous pouvons voir le nombre de retours chariot (lignes), caractères et mots de tous les fichiers «.page» dans le dossier help-files.
Installation de la commande de progression
La commande progress donne le même genre de informations utiles comme pv, mais cela fonctionne avec un ensemble spécifique de commandes Linux.
Pour installer la progression dans Ubuntu, utilisez cette commande:
sudo apt-get install progress
Pour installer progress dans Fedora, utilisez cette commande:
sudo dnf install progress
Pour installer progress dans Manjaro, utilisez cette commande:
sudo pacman -Syu progress
La progression des commandes fonctionne avec
Taper la progression dans une fenêtre de terminal et appuyer sur Entrée vous donnera une liste des commandes avec lesquelles la progression fonctionne.
progress
Utilisation de la progression avec les tuyaux
Il existe deux techniques que nous pouvons utiliser pour surveiller les commandes avec leur progression. La première consiste à utiliser des tuyaux.
La commande tar est dans la liste des commandes prises en charge que la progression peut surveiller, alors utilisons tar.
Les options que nous utiliserons sont les options standard -c (créer une archive), -z (compresser avec gzip) et -f (nom de fichier). Nous allons créer une archive compressée de tout ce qui se trouve dans le dossier help-files, et l’archive sera nommée «help.tgz».
Nous intégrons cela à l’avancement et utilisons l’option -m (monitor) pour que la progression continue de rapporter le processus jusqu’à ce qu’il soit terminé.
tar -czf help.tgz ./help-files/ | progress -m
La fenêtre du terminal affichera la progression de la commande tar lors de la création de l’archive.
Au fur et à mesure que chaque fichier est traité, il est répertorié avec les informations suivantes:
L’ID de processus.
Le nom du processus.
Pourcentage réalisé.
Données traitées et taille totale du fichier.
Débit de données (débit).
Temps restant estimé (ETA).
Vous pourriez être surpris de voir un deuxième ensemble de données apparaître. Ce premier ensemble de données concerne le tar. Le second est pour gzip. tar appelle gzip pour effectuer la compression. Étant donné que gzip est dans la liste des commandes prises en charge, les rapports de progression dessus.
Utilisation de la progression en mode de surveillance continue
Vous pouvez utiliser la progression dans un mode de surveillance continue en temps réel en utilisant l’option -M (moniteur).
Tapez la commande suivante dans une fenêtre de terminal:
progress -M
progress signalera qu’aucune commande n’est en cours d’exécution pour qu’il puisse le surveiller. Mais vous n’êtes pas renvoyé à la ligne de commande. progress attend qu’une commande qu’il puisse surveiller démarre. Il commencera alors automatiquement à en faire rapport.
Dans une autre fenêtre de terminal, tapez une commande qui se trouve dans la liste des commandes que la progression peut surveiller.
Nous allons utiliser le chat. Les commandes terminées trop rapidement ne seront pas enregistrées avec la progression, nous allons donc lister le contenu d’un très long fichier texte.
cat words.page
Dans la fenêtre du terminal avec la progression, vous verrez les statistiques de la commande cat pendant qu’elle s’exécute et s’achève.
Lorsque cat termine la liste, la progression du fichier revient à son état d’attente.
Chaque fois que l’une des commandes sur lesquelles elle peut générer un rapport effectue une tâche importante, la progression la surveillera automatiquement et en rendra compte.
C’est plutôt chouette.
100% terminé
Ne vous demandez plus comment fonctionne une commande de longue durée et évitez de considérer votre curseur avec pv et progrès.