Voglio eseguire un processo in bash e salvare in una variabile env il numero di secondi impiegato per l'esecuzione. Come farei una cosa del genere?bash: salva in una variabile il numero di secondi necessari per l'esecuzione di un processo
risposta
Vuoi inserire questo codice nel tuo script o farlo dal processo che avvia lo script?
Per quest'ultimo, è possibile utilizzare la parola riservata "ora" e quindi analizzare ciò che restituisce per ottenere quanto tempo impiega uno script.
Se si desidera eseguire questa operazione da uno script, è possibile impostare la variabile SECONDS su zero e ogni volta che si fa riferimento a tale variabile verrà aggiornato per il numero di secondi trascorsi. Quindi, puoi mettere "SECONDS = 0" all'inizio del tuo script, e ogni volta che hai bisogno del tempo trascorso sarà nella variabile SECONDS.
È inoltre possibile utilizzare il trucco $ SECONDI sulla riga di comando, così, ad esempio:
$ SECONDS=0; sleep 5 ; echo "that took approximately $SECONDS seconds"
La parola riservata di tempo e la variabile SECONDI sono entrambi documentate nella pagina man di bash.
Questo funziona in Bash, e anche Zsh:
# Set time format to seconds
TIMEFORMAT=%R
# Time a process
PROC_TIME=$(time (insert command here >/dev/null 2>&1) 2>&1)
echo $PROC_TIME
- I primi due reindirizzamenti nascondono uscita del vostro processo ">/dev/null 2> & 1"
- L'ultima reindirizzamento è necessario perché "time" stampa l'ora su stderr
'rtime() {TIMEFORMAT =% R; echo $ (time ("$ 1" 2> & 1) 2> & 1)} '.... e successivi ...' echo $ SECONDS' - Questo è magic ™ ... _e lo uso ** ALL ** the tempo_. –
Utilizzare il comando tempo. Si noti che la versione di tempo di bash non è la stessa di/usr/bin/time. Quindi avresti qualcosa tipo:
TIME=`/usr/bin/time --format="%e" your_command_here >/dev/null`
Il formato estrae semplicemente il valore di tempo "reale". Dovresti convertirlo da una stringa se vuoi fare qualcosa di più che visualizzarlo.
Se si desidera esportare la stringa, utilizzare export
.
La variabile '$ TIME' è effettivamente usata da'/usr/bin/time', quindi sarebbe meglio scegliere un nome di variabile diverso. Un modo per evitare tali conflitti è non usare nomi che siano tutti maiuscoli per le proprie variabili. –
Utilizzando GNU time,
\time -p -o time.log $COMMAND
e poi leggere time.log
.
(Utilizzare \time
o command time
, altrimenti userete di Bash time
built-in, che non supporta queste opzioni.)
Ciò funzionerà anche quando $COMMAND
stampe a STDERR (che sarebbe confondere Oli di risposta), e mantiene stdout/stderr (la risposta di Farzy no).
-o ...
dice time
di inviare il suo output a un file piuttosto che a stderr (come di default), e -p
genera il tradizionale
real 0.00
user 0.00
sys 0.00
piuttosto che di default di GNU time di
0.00user 0.00system 0:00.01elapsed 8%CPU (0avgtext+0avgdata 0maxresident)k
80inputs+0outputs (1major+188minor)pagefaults 0swaps
- 1. salva un file di testo in una variabile in bash
- 2. Ottieni il numero di byte necessari per una stringa Unicode
- 3. Timer semplice per misurare i secondi necessari a un'operazione completata
- 4. Conta correttamente numero di righe una variabile bash
- 5. per convertire il tempo in numero di secondi
- 6. Domanda intervista: numero di bit swap necessari per convertire un numero intero in un altro
- 7. Estrarre parte di una stringa in una variabile in bash
- 8. Come echo una somma di una variabile e un numero?
- 9. Come ottenere l'output di un comando bash in una variabile
- 10. uccidere un processo in bash
- 11. Modifica della variabile di ambiente per un processo con scala.sys.process?
- 12. Ottieni il numero di secondi dal
- 13. Come ottenere il PID di un processo che viene convogliato su un altro processo in Bash?
- 14. Costante di .NET per il numero di secondi in un giorno?
- 15. Come ottenere variabile da file di testo in Bash variabile
- 16. Ordinare una lista multidimensionale per un numero variabile di chiavi
- 17. Uso della sostituzione di processo bash per un comando sudo
- 18. Espansione di sequenze e variabile in bash
- 19. Come ottenere il numero di thread in un processo Java
- 20. Loop Python da eseguire per un certo numero di secondi
- 21. Come eseguire un processo con un timeout in Bash?
- 22. Attendi/sospendi un numero di secondi in C
- 23. Aumentare il numero di thread per processo di lavoro IIS
- 24. Bash: limitare il numero di lavori simultanei?
- 25. Conversione del tempo in secondi con il numero di stringa
- 26. passando grep in una variabile in bash
- 27. Tempo di incremento (minuti e secondi) nello script bash/shell
- 28. Salva una condizione come variabile. Javascript
- 29. Modifica della variabile di ambiente di un processo in esecuzione
- 30. Contare il numero di istanze in cui una variabile o una combinazione di variabili sono TRUE
bash è una fonte inesauribile di inganni e sorprese – flybywire