Pipe Viewer: uno strumento per visualizzare l’avanzamento dei comandi in Linux
Quando si lavora su alcuni processi, a volte è necessario visualizzare l’avanzamento delle operazioni sui file. Alcuni comandi hanno un parametro che ti aiuta a vedere i progressi, ma per quelli che non lo fanno, devi usare un altro metodo. Per alleviare questo problema, puoi utilizzare un visualizzatore di pipe che mostra l’avanzamento dei vari processi che avvii.
Cos’è il visualizzatore di pipe
Visualizzatore della pipeline (pv) è uno strumento CLI che consente di monitorare l’avanzamento dei dati attraverso una pipeline, fornendo informazioni come percentuale di completamento, ETA, dati totali trasferiti, tempo trascorso, ecc. Se hai dei processi, puoi inserire il visualizzatore di pipeline come una normale pipeline tra i diversi processi per avere un’indicazione visiva dello stato di avanzamento.
Opzioni visualizzatore pipe:
-s, --size <size>
: supponi che la quantità totale di dati da trasferire sia SIZE. Puoi fornire una dimensione in byte o utilizzando unità (b, kb, mb, gb, tb
).-N, --name <name>
: anteporre alle informazioni di output NAME.
1) Installazione di Pipe Viewer
Il visualizzatore Pipe può essere installato tramite node.js come segue:
# npm install -g pv
/usr/bin/pv -> /usr/lib/node_modules/pv/bin/pv.js
+ pv@1.0.1
added 15 packages in 0.953s
Esempi di utilizzo del visualizzatore pipeline
In questa parte, ti mostrerò alcuni esempi diversi che possono aiutarti a utilizzare lo strumento pv
a) Visualizzare una progressione dd copy
È possibile visualizzare l’avanzamento della copia di un file quando si utilizza il comando dd
# dd if=ubuntu-gnome-17.04-desktop-amd64.iso | pv | dd of=dest/ubuntu17
0.00% | 0 ETA | 1.36GB Transferred | 95.71MB/s2964416+0 records in
2964416+0 records out
1517780992 bytes (1.5 GB) copied, 14.7174 s, 103 MB/s
100.00% | 0 ETA | 1.41GB Transferred | 96.5MB/s2964416+0 records in
2964416+0 records out
1517780992 bytes (1.5 GB) copied, 14.7301 s, 103 MB/s
b) Una progressione del comando cat
Puoi decidere di mostrare l’avanzamento del comando cat quando, ad esempio, mostri il contenuto del file di registro dei messaggi
# cat /var/log/messages | pv
Oct 13 03:36:02 localhost journal: Runtime journal is using 6.1M (max allowed 49.4M, trying to leave 74.1M free of 488.4M available → current limit 49.4M).
Oct 13 03:36:02 localhost kernel: Linux version 4.9.36-x86_64-linode85 (maker@build.linode.com) (gcc version 4.9.2 (Debian 4.9.2-10) ) #1 SMP Thu Jul 6 15:31:23 UTC 2017
........
........
100.00% | 0 ETA | 114.83KB Transferred | 114.83KB/s
c) Mostra i progressi durante la compressione
Durante alcune operazioni di compressione, potrebbe essere necessario visualizzare l’avanzamento. È possibile come di seguito
# tar -cf - /var/log/ | pv -N backlog | tar -C . -x
tar: Removing leading `/' from member names
backlog: 100.00% | 0 ETA | 660KB Transferred | 660KB/s
d) Visualizza una rete ssh live
Puoi connetterti a un host tramite ssh e mostra la velocità di trasferimento in tempo reale. Nel nostro caso, indirizzeremo tutti i dati trasferiti a /dev/null
con un test locale
# yes | pv | ssh paul@localhost "cat > /dev/null"
The authenticity of host 'localhost (::1)' can't be established.
ECDSA key fingerprint is SHA256:lqes2c9Obi9lCSepwdT8uovcsmhcboUAsylF69MENDE.
ECDSA key fingerprint is MD5:38:67:a1:25:96:7b:69:02:f6:b8:ff:5d:ce:03:fd:a0.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'localhost' (ECDSA) to the list of known hosts.
paul@localhost's password:
0.00% | 0 ETA | 800.84MB Transferred | 17.04MB/s
Unix Pipe Viewer di Rocco Musolino non mostra la percentuale completa con la barra di avanzamento come il pipe viewer “normale” installato tramite pacchetto. Possiamo vedere che il pipe viewer è interessante quando ci troviamo di fronte a comandi che non permettono di visualizzare lo stato di avanzamento dei processi.