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

Invite de terminal Linux sur un ordinateur portable

Au lieu de voler à l’aveugle, utilisez Linux pv et progress commandes 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 de siège, il n’est pas facile de savoir à quelle distance vous êtes dans votre voyage. 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 sur le calendrier? 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.

Le pv et progress Les commandes vous donnent des 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.

À installer pv sur Ubuntu, utilisez cette commande:

sudo apt-get install pv

À installer pv sur Fedora, utilisez cette commande:

sudo dnf install pv

À 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 transmettons une image ISO 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

L’information pv nous donne peut être vu dans la ligne du bas de l’écran.

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 que le fichier est copié.

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/

Le tar -c help-files/ une partie de la commande indique tar créer (-c) une archive des fichiers dans le dossier help-files. Ceci est diffusé pv afin que nous ayons 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) aux documents avant l’extraction.

En relation :  Comment résoudre le problème de non-synchronisation du trousseau iCloud

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

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 réinjecté directement 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?

On peut encore utiliser tar pour créer un fichier d’archive et obtenir un rapport d’avancement de pv. Les options utilisées avec tar sommes -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 provoque tar utiliser stdout, et d’écrire sa sortie dans la fenêtre du terminal. Nous ne voyons pas cette sortie parce qu’elle est acheminée pv.

Le nom réel de l’archive sera le nom de fichier à partir duquel nous acheminons la sortie pv dans. Dans ce cas, il s’agit de «help-files.tgz».

tar -czf - ./help-files/ | pv > help-files.tgz

Nous obtenons les mêmes indicateurs de progression qu’avant, et le fichier d’archive est créé pour nous.

Bientôt: Comment compresser et extraire des fichiers à l’aide de la commande tar sous Linux

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.

Utilisant pv sans aucune option équivaut à utiliser le -pterb options.

  • -p: afficher le pourcentage Achevée. Il s’agit de la barre de progression et du pourcentage achevé.
  • -t: afficher le temps écoulé temps.
  • -e: afficher le ETA.
  • -r: afficher le évaluer de transfert de données.
  • -b: afficher le octet count (données transférées jusqu’à présent).
  • -n: afficher le pourcentage sous forme de 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 le -p (pourcentage achevé) option pour pv.

tar -czf - ./help-files/ | pv - p > help-files.tgz

Cela désactive toutes les autres options d’affichage. pv fournit uniquement l’élément de pourcentage achevé.

Parce que pv n’obtient pas de pourcentage achevé à partir de tar, la barre de progression est remplacée par un indicateur mobile. Il n’y a pas de pourcentage.

Utilisation du pv avec wc

On peut utiliser pv pour diriger un fichier texte (ou des fichiers) vers wc. wc comptera alors les retours chariot, les caractères et les mots et pv nous donnera un rapport d’étape.

Ici, nous envoyons tous les fichiers «.page» du répertoire help-files vers wc.

Lorsque wc terminé, nous pouvons voir notre décompte des retours chariot (lignes), des caractères et des mots de tous les fichiers «.page» dans le dossier help-files.

En relation :  Comment utiliser la commande fd sous Linux

Installation de la commande de progression

Le progress commande donne le même genre de informations utiles comme pv, mais cela fonctionne avec un ensemble spécifique de commandes Linux.

À installer progress dans Ubuntu, utilisez cette commande:

sudo apt-get install progress

À installer progress dans Fedora, utilisez cette commande:

sudo dnf install progress

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

À installer progress dans Manjaro, utilisez cette commande:

sudo pacman -Syu progress

La progression des commandes fonctionne avec

Dactylographie progress dans une fenêtre de terminal et en appuyant sur Entrée vous donnera une liste des commandes qui progress marche avec.

progress

Utilisation de la progression avec les tuyaux

Il existe deux techniques que nous pouvons utiliser pour surveiller les commandes avec progress. La première consiste à utiliser des tuyaux.

Le tar commande est dans la liste des commandes prises en charge qui progress peut surveiller, alors utilisons tar.

Les options que nous utiliserons sont la norme -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 introduisons cela dans progress et en utilisant le -m (moniteur) option donc progress continue de rendre compte du processus jusqu’à ce qu’il soit terminé.

tar -czf help.tgz ./help-files/ | progress -m

La fenêtre du terminal affichera la progression du tar commande 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 du 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 serez peut-être surpris de voir apparaître un deuxième ensemble de données. Ce premier ensemble de données concerne tar. Le second est pour gzip. tar appels gzip pour effectuer la compression. Parce que gzip est dans la liste des commandes prises en charge, progress rapports à ce sujet.

Utilisation de la progression en mode de surveillance continue

Vous pouvez utiliser progress en mode moniteur continu 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’il n’y a aucune commande en cours d’exécution pour qu’il surveille. 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, saisissez une commande figurant dans la liste des commandes que la progression peut surveiller.

Nous allons utiliser cat. Les commandes terminées trop rapidement ne s’enregistreront pas avec progress, nous allons donc lister le contenu d’un très long fichier texte.

cat words.page

Dans la fenêtre du terminal avec progress dedans, vous verrez des statistiques pour le cat commande au fur et à mesure de son exécution et de son achèvement.

Lorsque cat finit de lister le fichier progress retourne à son état d’attente.

Chaque fois que l’une des commandes sur lesquelles il peut générer un rapport effectue une tâche importante, progress le 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 contempler votre curseur avec pv et progress .

Moyens Staff
Moyens I/O Staff vous a motivé, donner des conseils sur la technologie, le développement personnel, le style de vie et des stratégies qui vous aider.