Comment surveiller la progression des commandes Linux (avec pv et progression)

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.

Installation de pv

Vous devez installer pv.

Pour installer pv sur Ubuntu, utilisez cette commande:

sudo apt-get install pv

sudo apt-get install pv dans une fenêtre de terminal

Pour installer pv sur Fedora, utilisez cette commande:

sudo dnf install pv

sudo dnf installer pv dans une fenêtre de terminal

Pour installer pv sur Manjaro, utilisez cette commande:

sudo pacman -Syu pv

sudo pacman -Syu pv dans une fenêtre de terminal

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

pv /media/dave/SILVERXHD/gparted-live-1.0.0-1-amd64.iso | zip> gparted.zip dans une fenêtre de terminal ”width =” 646 ″ height = ”77 ″ onload =” pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon (this); ” onerror = ”this.onerror = null; pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon (this);”> </p><div style=

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

pv /media/dave/SILVERXHD/gparted-live-1.0.0-1-amd64.iso | gparted.iso dans une fenêtre de terminal

Nous obtenons un rapport d’avancement au fur et à mesure de la copie du fichier.

copie d'un fichier avec pv dans une fenêtre de terminal te

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/

tar -c fichiers d'aide / | pv | tar -x -C Documents / dans une fenêtre de terminal

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.

copie de fichiers avec pv et tar dans une fenêtre de terminal

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.

  Comment modifier les raccourcis de l'écran de verrouillage dans Android 8

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

tar -czf - ./help-files/ | pv> help-files.tgz dans une fenêtre de terminal ”width =” 646 ″ height = ”57 ″ onload =” pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon (this); ” onerror = ”this.onerror = null; pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon (this);”> </p><p> Nous obtenons les mêmes indicateurs de progression que précédemment, et le fichier d’archive est créé pour nous. </p><p> < p> <img chargement =

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

tar -czf - ./help-files/ | pv - p> help-files.tgz dans une fenêtre de terminal ”width =” 646 ″ height = ”57 ″ onload =” pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon (this); ” onerror = ”this.onerror = null; pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon (this);”> </p><p> Ceci désactive toutes les autres options d’affichage. pv fournit uniquement l’élément de pourcentage achevé. </p><p> Comme pv n’obtient pas de pourcentage achevé de tar, la barre de progression est remplacée par un indicateur mobile. Il n’y a pas de pourcentage. </p><p> <img loading =

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.

pv ./help-files/*.page |  wc dans une fenêtre de terminal

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.

sortie de pv et wc dans une fenêtre de terminal

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

sudo apt-get progression de l'installation dans une fenêtre de terminal

Pour installer progress dans Fedora, utilisez cette commande:

sudo dnf install progress

progression de l'installation sudo dnf dans une veuve de terminal

Pour installer progress dans Manjaro, utilisez cette commande:

sudo pacman -Syu progress

sudo pacman -Syu progression dans une fenêtre de terminal

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

sortie de la commande de progression dans une fenêtre de terminal

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.

  Comment rechercher tous les services de streaming pour un film ou une émission de télévision

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

tar -czf help.tgz ./help-files/ | progress -m dans une fenêtre de terminal

La fenêtre du terminal affichera la progression de la commande tar lors de la création de l’archive.

commande de progression surveillance tar dans une fenêtre de terminal

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 -M dans une fenêtre de terminal

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.

progression en attente d'une commande pour démarrer dans une fenêtre de terminal

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

mots de chat page dans une fenêtre de terminal

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.

rapport de progression sur chat dans une fenêtre de terminal

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.