Come monitorare l'avanzamento dei comandi Linux (con pv e progress)
Pubblicato: 2022-01-29 Invece di volare alla cieca, usa i comandi pv
e progress
di Linux per tenere traccia dell'avanzamento di un comando. Queste utilità ti daranno barre di avanzamento per i comandi che normalmente non ne hanno. Vedrai anche un tempo stimato fino al completamento.
Se sei su un volo a lungo raggio su un aereo senza schermi video negli schienali, non è facile sapere a che punto sei nel tuo viaggio. Sai quando sei decollato. Sai quanto tempo dovrebbe durare il volo. Ma come fai a sapere se sei in pista, in tempo o molto in ritardo? Se non vuoi guardare il film in volo, di solito puoi cambiare lo schermo video per mostrare una mappa con la posizione del tuo aereo su di essa. Ottieni anche alcune statistiche, come l'orario di arrivo previsto (ETA), il che è fantastico.
L'avvio di un comando dalla finestra del terminale a volte può sembrare un volo a lungo raggio senza uno schermo video. Non hai nulla da dare alcuna indicazione se tutto va bene o se il processo si è bloccato, né quanto sia vicino al completamento. Un cursore lampeggiante non è molto informativo.
I comandi pv
e progress
ti danno alcune statistiche e un piccolo feedback visivo. Puoi vedere quanto è vicino al completamento del processo. Ciò significa che ottieni un ETA per i tuoi processi in esecuzione. Rispetto a fissare un cursore, vince a mani basse.
Installazione pv
Devi installare pv
.
Per installare pv
su Ubuntu usa questo comando:
sudo apt-get install pv
Per installare pv
su Fedora usa questo comando:
sudo dnf install pv
Per installare pv
su Manjaro usa questo comando:
sudo pacman -Syu pv
Usando pv
pv
sta per pipe viewer. Le tubazioni devono essere coinvolte nel comando da qualche parte. Ecco un esempio in cui stiamo inviando un'immagine ISO tramite zip
per creare un file zip compresso dell'ISO.
Per rallentare abbastanza i comandi da consentire l'acquisizione di uno screenshot, alcuni dei file negli esempi utilizzati per questo articolo sono stati archiviati su una vecchia USB esterna lenta denominata SILVERXHD.
pv /media/dave/SILVERXHD/gparted-live-1.0.0-1-amd64.iso | zip > gparted.zip
Le informazioni che pv
ci fornisce possono essere visualizzate nella riga inferiore del display.
Da sinistra a destra, le informazioni visualizzate sono:
- I dati finora trasferiti.
- Il tempo è trascorso da lontano.
- La velocità di trasferimento dei dati (throughput).
- Una barra di avanzamento e una percentuale di completamento.
- Il tempo stimato rimasto prima del completamento (ETA).
Copia di un file con pv
Per copiare un file con output da pv
, utilizzare questo comando:
pv /media/dave/SILVERXHD/gparted-live-1.0.0-1-amd64.iso > gparted.iso
Riceviamo un rapporto sullo stato di avanzamento quando il file viene copiato.
Copia di più file con pv
Per copiare più file e cartelle con pv
dobbiamo usare un piccolo trucco. Usiamo tar
per spostare i file per noi.
tar -c file-di aiuto/ | pv | tar -x -C Documenti/
La parte tar -c help-files/
del comando indica a tar
di creare ( -c
) un archivio dei file nella cartella help-files. Questo viene convogliato attraverso pv
in modo da ottenere una visualizzazione dei progressi. Viene quindi reindirizzato a tar
per l'ultima parte del comando. L'archivio viene estratto ( -x
) e la directory viene modificata ( -C
) in Documenti prima dell'estrazione.
Quindi, i file e le cartelle che si trovano nei file della guida vengono copiati nella cartella Documenti, con una visualizzazione dello stato di avanzamento.
L'output è leggermente diverso questa volta.
Non otteniamo un ETA. La barra di avanzamento ora mostra un indicatore in movimento. Mostra che il processo è attivo, ma non cresce da sinistra a destra come una barra di avanzamento tradizionale. pv
si limita a visualizzare le informazioni che può estrarre dal processo che viene inviato tramite pipe.
Utilizzo di pv e tar per creare un archivio
La copia di file con pv
e tar
non ci lascia con un file di archivio. Una sorta di archivio "virtuale" viene creato da tar
, che viene reimmesso direttamente in tar
per estrarre i file. Se il nostro obiettivo è copiare i file, ciò è raggiunto. Ma cosa succede se vogliamo creare un file di archivio?
Possiamo ancora usare tar
per creare un file di archivio e ottenere un rapporto sullo stato di avanzamento da pv
. Le opzioni usate con tar
sono -c
(crea archivio), -z
(comprimi con gzip) e -f
(nome file dell'archivio).
Nota che stiamo usando -
come nome file, che fa sì che tar
utilizzi stdout e ne scriva l'output nella finestra del terminale. Non vediamo quell'output perché viene inviato tramite pipe tramite pv
.
Il nome effettivo dell'archivio sarà il nome del file in cui convogliamo l'output da pv
. In questo caso, è "help-files.tgz".
tar -czf - ./file-di aiuto/ | pv > help-files.tgz
Otteniamo gli stessi indicatori di avanzamento di prima e il file di archivio viene creato per noi.
CORRELATI: Come comprimere ed estrarre file usando il comando tar su Linux
Le opzioni di visualizzazione pv
Ci sono un certo numero di opzioni che puoi usare con pv
per cambiare i dettagli del suo rapporto.
Se utilizzi una di queste opzioni, tutte le altre opzioni vengono disattivate. Quindi, se vuoi avere tre delle opzioni di visualizzazione in uso, devi specificare queste tre opzioni.
Usare pv
senza alcuna opzione è lo stesso che usare le opzioni -pterb
.
- -p : visualizza la percentuale di completamento. Questa è la barra di avanzamento e la percentuale di completamento.
- -t : visualizza il tempo trascorso.
- -e : visualizza l' ETA .
- -r : visualizza la velocità di trasferimento dei dati.
- -b : visualizza il conteggio dei byte (dati trasferiti finora).
- -n : visualizza la percentuale come numero intero . Questo stampa la percentuale completata come cifra intera, con ogni nuovo aggiornamento su una nuova riga.
Ripetiamo l'ultimo comando e passiamo l'opzione -p
(percentuale completata) a pv
.
tar -czf - ./file-di aiuto/ | pv - p > help-files.tgz
Questo disattiva tutte le altre opzioni di visualizzazione. pv
fornisce solo l'elemento percentuale completato.
Poiché pv
non ottiene una cifra percentuale completata da tar
, la barra di avanzamento viene sostituita con un indicatore mobile. Non c'è una cifra percentuale.
Utilizzando pv Con wc
Possiamo usare pv
per reindirizzare uno o più file di testo in wc
. wc
conterà quindi i ritorni a capo, i caratteri e le parole e pv
ci fornirà un rapporto sullo stato di avanzamento.
Qui stiamo collegando tutti i file ".page" nella directory dei file di aiuto in wc
.
Quando wc
è completo, possiamo vedere il nostro conteggio di ritorni a capo (righe), caratteri e parole da tutti i file ".page" nella cartella dei file di aiuto.
Installazione del comando di avanzamento
Il comando progress
fornisce lo stesso tipo di informazioni utili di pv
, ma funziona con un insieme specifico di comandi Linux.
Per installare progress
in Ubuntu, usa questo comando:
sudo apt-get avanzamento dell'installazione
Per installare progress
in Fedora, usa questo comando:
sudo dnf avanzamento dell'installazione
Per installare progress
in Manjaro, usa questo comando:
sudo pacman -Syu progresso
Il progresso dei comandi funziona con
Digitando progress
in una finestra del terminale e premendo Invio ti verrà mostrato un elenco dei comandi con cui funziona il progress
.
progresso
Utilizzo del progresso con i tubi
Ci sono due tecniche che possiamo usare per monitorare i comandi con progress
. Il primo è usare i tubi.
Il comando tar
è nell'elenco dei comandi supportati che progress
può monitorare, quindi usiamo tar
.
Le opzioni che useremo sono le opzioni standard -c
(crea archivio), -z
(comprimi con gzip) e -f
(nome file). Creeremo un archivio compresso di tutto ciò che si trova nella cartella dei file di aiuto e l'archivio sarà chiamato "help.tgz".
Lo stiamo collegando allo stato di progress
e utilizzando l'opzione -m
(monitor) in modo che i progress
continuino a segnalare il processo fino al completamento.
tar -czf help.tgz ./help-files/ | progresso -m
La finestra del terminale mostrerà lo stato di avanzamento del comando tar
mentre crea l'archivio.
Man mano che ogni file viene elaborato, viene elencato con le seguenti informazioni:
- L'ID del processo.
- Il nome del processo.
- Percentuale completata.
- Dati elaborati e dimensione totale del file.
- Velocità dati (velocità di trasmissione).
- Tempo residuo stimato (ETA).
Potresti essere sorpreso di vedere apparire un secondo set di dati. Questo primo set di dati è per tar
. Il secondo è per gzip
. tar
chiama gzip
per eseguire la compressione. Poiché gzip
è nell'elenco dei comandi supportati, lo stato di progress
riporta su di esso.
Utilizzo dell'avanzamento in modalità di monitoraggio continuo
È possibile utilizzare l' progress
in una modalità di monitoraggio continuo in tempo reale utilizzando l'opzione -M (monitor).
Digita il seguente comando in una finestra di terminale:
progresso -M
progress
riporterà che non ci sono comandi in esecuzione per il monitoraggio. Ma non vieni riportato alla riga di comando. progress
attende l'avvio di un comando che può monitorare. Inizierà quindi automaticamente a segnalarlo.
In un'altra finestra del terminale, digita un comando che si trova nell'elenco dei comandi che l'avanzamento può monitorare.
Useremo cat
. I comandi terminati troppo rapidamente non verranno registrati con progress
, quindi elencheremo il contenuto di un file di testo molto lungo.
gatto parole.pagina
Nella finestra del terminale con progress
al suo interno, vedrai le statistiche per il comando cat
mentre viene eseguito e lavora verso il completamento.
Quando cat
finisce di elencare, l' progress
del file torna al suo stato di attesa.
Ogni volta che uno dei comandi su cui può riferire esegue un'attività importante, lo stato di progress
lo monitorerà automaticamente e lo riporterà.
È abbastanza pulito.
Completato al 100%.
Elimina le congetture dal chiederti come sta andando un comando di lunga durata e prenditi una pausa dalla contemplazione del tuo cursore con pv
e progress
.
Comandi Linux | ||
File | tar · pv · cat · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · look · strings · type · rename · zip · unzip · mount · umount · install · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · converti · rclone · shred · srm | |
Processi | alias · screen · top · nice · renice · progress · strace · systemd · tmux · chsh · history · at · batch · free · which · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · timeout · wall · yes · kill · sleep · sudo · su · time · groupadd · usermod · groups · lshw · shutdown · reboot · halt · poweroff · passwd · lscpu · crontab · date · bg · fg | |
Rete | netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw |
CORRELATI: I migliori laptop Linux per sviluppatori e appassionati