Come monitorare l'avanzamento dei comandi Linux (con pv e progress)

Pubblicato: 2022-01-29
Prompt del terminale Linux su un laptop
Fatmawati Achmad Zaenuri/Shutterstock.com

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.

Annuncio pubblicitario

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.

copiare un file con pv in una finestra di terminale

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/ 

Annuncio pubblicitario

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 .

Annuncio pubblicitario

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 

Annuncio pubblicitario

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 

sudo dnf install progress in una vedova di terminale

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.

Annuncio pubblicitario

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 

Annuncio pubblicitario

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 .

CORRELATI: I migliori laptop Linux per sviluppatori e appassionati