\documentclass{report}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{textcomp}
\usepackage{geometry}
\geometry{top=15mm, bottom=15mm, left=1cm, right=1cm}
\usepackage[french]{babel}
\usepackage{pslatex}
\usepackage[colorlinks=true,urlcolor=black]{hyperref}
\usepackage{graphicx}
\usepackage{fancyhdr}
\pagestyle{fancy}
\renewcommand{\footrulewidth}{0.4pt}
\fancyfoot[L]{Uubu.fr}
\fancyfoot[R]{lun. juin 20 21:11:54 CEST 2016}
\lfoot{\Large \textit{Uubu.fr}}
\hypersetup{pdfinfo={
Title={pv},
Author={Sylvain Girod},
Creator={Bash script from uubu.fr's format version 1},
Producer={Bash script and PDFLaTeX},
Subject={Superviser la progression des données via un pipe},
CreationDate={D:20160620211154},
ModDate={D:20160620211154},
Keywords={Linux}
}}
\begin{document}
 
\begin{center}
{\Huge pv }
\end{center}
\vspace{1cm}
 
\begin{flushleft}
 
{\large Superviser la progression des données via un pipe}
 
\vspace{10mm}
 
\hspace{1mm}  pv affiche la progression des données via un pipeline en donnant des informations tel que le temps passé, le pourcentage complété (avec barre de progression), Taux, total transféré, et ETA. Pour l'utiliser, l'insérer dans un pipeline entre 2 processus, avec les options appropriées. Son entrée standard sera passé à sa sortie standard et la progression sera affichée sur l'erreur standard. pv copie chaque fichier fournis en retour sur la sortie standard. Si aucun fichier n'est spécifié, copie simplement l'entrée standard, et fonctionne comme cat.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Options d'affichage }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} -p, --progress]{Active la barre de progression. Si l'entrée standard n'est pas un fichie et qu'aucune taille n'est donnée, la barre ne peut pas indiquer la progression, et se déplace donc de gauche à droite pour indique que les données sont en cours de déplacement}
\item[\hspace{1mm} -t, --timer]{Active le timer. Affiche le temps passé total.}
\item[\hspace{1mm} -e, --eta]{Active le timer ETA. Il tente de le deviner, basé sur les taux de transfert précédents et la taille totale des donnée.}
\item[\hspace{1mm} -I, --fineta]{Active le timer ETA, mais affiche la date locale estimée de l'arrivée au lieu du temps passé.}
\item[\hspace{1mm} -r, --rate]{Active le compteur de taux.}
\item[\hspace{1mm} -a, --average-rate]{Affiche le compteur moyen de taux}
\item[\hspace{1mm} -b, --bytes]{Affiche le compteur d'octets total}
\item[\hspace{1mm} -T, --buffer-percent]{Active l'affichage du \% de tampon transféré.}
\item[\hspace{1mm} -A, --last-written NUM]{Affiche les dernier NUM octets écris}
\item[\hspace{1mm} -F, --format FORMAT]{Ignore les options -p, -t, -e, -r, -a- -b, -T et -A et utilise le format spécifié pour déterminer le format de sortie.}
\item[\hspace{1mm} -n, --numeric]{Sortie numérique. Au lieu de donner une indication visuelle de la progression, pv donne un entier en \%, un par ligne, sur l'erreur standard.}
\item[\hspace{1mm} -q, --quiet]{Pas de sortie. Utile avec -L}
\end{description}
 
\vspace{1cm}{\huge Options de sortie }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} -W, --wait]{Attend que le premier octet soit transféré avant d'afficher la barre de progression ou calculer tout ETA.}
\item[\hspace{1mm} -D, --delay-start SEC]{Attend le délai spécifié avant afficher les informations de progression}
\item[\hspace{1mm} -s SIZE, --size SIZE]{Assume que la quantité totale de données à transférer est SIZE octets en calculant les pourcentages et les ETA.}
\item[\hspace{1mm} -l, --line-mode]{Au lieu de compter les octets, compte les lignes.}
\item[\hspace{1mm} -0, --null]{Compte les lignes terminées par un caractère null. implique --line-mode}
\item[\hspace{1mm} -i SEC, --interval SEC]{délai de mise à jours. (défaut: toutes les secondes)}
\item[\hspace{1mm} -w WIDTH, --width WIDTH]{Assume que le terminal fait WIDTH caractères de large (défaut: 80 s'il ne peut pas le deviner)}
\item[\hspace{1mm} -H HEIGHT, --height HEIGHT]{Assume que le terminal fait HEIGHT lignes de haut (défaut: 25 s'il ne peut pas le deviner)}
\item[\hspace{1mm} -N NAME, --name NAME]{Préfixe les informations de sortie avec le nom spécifié.}
\item[\hspace{1mm} -f, --force]{Force la sortie. Normalement, pv ne sort pas d'affichage visuel si l'erreur standard n'est pas un terminal.}
\item[\hspace{1mm} -c, --cursor]{Utilise les séquences de positionning du curseur au lieu des retours charriot.}
\end{description}
 
\vspace{1cm}{\huge Options de transfert }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} -L RATE, --rate-limit RATE]{Limite le taux de transfert}
\item[\hspace{1mm} -B BYTES, --buffer-size BYTES]{Utilise une taille de tampon de transfers à la taille spécifiée}
\item[\hspace{1mm} -C, --no-splice]{N'utilise jamais splice(2), même si c'est possible. cet appel système est une manière plus efficace de transférer des données dans un pipe que read(2) et write(2), mais signifie que le tampon de transfert ne peut pas être utilisé. Cela empêche -A et -T de fonctionner.}
\item[\hspace{1mm} -E, --skip-errors]{Ignore les erreurs de lecture en tentant de sauter ces sections. (similaire à dd conv=sync, noerror)}
\item[\hspace{1mm} -S, --stop-at-size]{Si une taille est spécifiée avec -s, stop le transfert une fois cette taile atteinte.}
\item[\hspace{1mm} -d PID\texttt{[}:FD\texttt{]}, --watchfd PID\texttt{[}:FD\texttt{]}]{Au lieu de transférer des données, lit de descripteur de fichier du PID spécifié.}
\item[\hspace{1mm} -R PID, --remote PID]{Si PID est une instance de pv qui est déjà en cours de fonctionnement, cette option force cette instance à agir comme si elle avait été donnée sur la ligne de commande.}
\end{description}
 
\vspace{1cm}{\huge Options générales }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} -P FILE, --pidfile FILE]{Sauve le PID de pv dans le fichier spécifié.}
\end{description}
 
\vspace{1cm}{\huge Formattage }
 
\
 
\hspace{1mm}  l'option -F permet de déterminer le format de sortie. les séquences suivantes peuvent être utilisées:
\vspace{5mm} \\
 
 
\begin{description} \normalsize
\item[\hspace{1mm} \%p]{Barre de progression. Équivalent à -p}
\item[\hspace{1mm} \%t]{Temps passé. Équivalent à -e}
\item[\hspace{1mm} \%e]{Temps restant ETA. Équivalent à -e}
\item[\hspace{1mm} \%I]{Temps local ETA restant. Équivalent y -I}
\item[\hspace{1mm} \%r]{Taux de transfert de données courant. Équivalent à -r}
\item[\hspace{1mm} \%a]{Taux de transfert moyen des données. Équivalent à -a}
\item[\hspace{1mm} \%b]{Octets transférés. Équivalent à -b}
\item[\hspace{1mm} \%T]{\% de tampon de transfert utilisé. Équivalent à -T}
\item[\hspace{1mm} \%nA]{Affiche les derniers n octets écrits.}
\item[\hspace{1mm} \%N]{préfix à ajouter. Équivalent à -N}
\item[\hspace{1mm} \%\%]{le caractère \%}
\end{description}
 
\vspace{1cm}{\huge Codes de sortie }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} 1]{Indique un problème avec les options -R ou -P}
\item[\hspace{1mm} 2]{Un ou plusieurs fichiers ne peuvent pas être accedés, stat(2) ou ouverts}
\item[\hspace{1mm} 4]{Un fichier d'entrée est le même que le fichier de sortie}
\item[\hspace{1mm} 8]{Erreur interne avec la fermeture d'un fichier ou en passant au fichier suivant}
\item[\hspace{1mm} 16]{Erreur en transférant des données}
\item[\hspace{1mm} 32]{Un signal a fait quitté prématurément}
\item[\hspace{1mm} 64]{Erreur d'allocation mémoire}
\end{description}
 
\vspace{1cm}{\huge Exemples }
 
\
 
\hspace{1mm} voir la vitesse de transfert de fichie avec nc: \\
\hspace{1mm} \textbf{pv file | nc -w 1 somewhere.com 3000} \\
\hspace{1mm} transférer un fichier d'un autre processus et passer la taille attendue à pv: \\
\hspace{1mm} \textbf{cat file | pv -s 12345 | nc -w 1 somewhere.com 3000} \\
\hspace{1mm} Exemple plus complexe utilisant une sortie numérique pour aller dans dialog pour un affichage de progression plein-écran \\
\hspace{1mm} \textbf{(tar cf - . | pv -n -s \$(du -sb . | awk '\{print \$1\}') | gzip -9 > out.tgz) 2>\&1 | dialog --gauge 'Progress' 7 70} \\
\hspace{1mm} Prend une image d'un disque, en sautant les erreurs: \\
\hspace{1mm} \textbf{pv -EE /dev/sda > disk-image.img} \\
\hspace{1mm} Écrire une image dans un disque \\
\hspace{1mm} \textbf{pv disk-image.img > /dev/sda} \\
\hspace{1mm} Remplir un disque de 0. Noter que si l'entrée ne peut pas être calculée, et que la sortie est un périphérique block, la taile du périphérique block sera utilisé et pv stopera automatiquement à cette taille. \\
\hspace{1mm} \textbf{pv < /dev/zero > /dev/sda} \\
\hspace{1mm} Voir le descripteur 3 ouvert par un autre processus: \\
\hspace{1mm} \textbf{pv -d 1234:3} \\
\hspace{1mm} Voir tous les descripteurs de fichier utilisés par le processus 1234 \\
\hspace{1mm} \textbf{pv -d 1234} \\
\end{flushleft}
\end{document}
