Come posso programmare un comando specifico?


68

(L'equivalente linux di TimeThis.exe)

Qualcosa di simile a:

timethis wget foo.com
Receiving foo.com  
...

wget foo.com took 3 seconds.

Risposte:


95

Prova solo timeinvece di timethis.

Anche se tieni presente che spesso c'è una versione di shell integrata nel tempo e una versione binaria, che darà risultati in diversi formati:

$ time wget -q -O /dev/null https://unix.stackexchange.com/

real    0m0.178s
user    0m0.003s
sys     0m0.005s

vs

$ \time wget -q -O /dev/null https://unix.stackexchange.com/
0.00user 0.00system 0:00.17elapsed 4%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (0major+613minor)pagefaults 0swaps

A differenza del tuo programma "timethis", ottieni tre valori indietro. Questo è suddiviso in Che cos'è "ora di sistema" quando si utilizza "ora" nella riga di comando , ma in breve: reale significa "ora dell'orologio da parete", mentre l' utente e il sistema mostrano l'ora dell'orologio della CPU, diviso tra il codice normale e le chiamate di sistema.


26

Usando il file eseguibile timeanziché l'integrato della shell, è possibile specificare il formato e i valori di output. Ad esempio ottenere il tempo reale trascorso insieme al nome del comando e ai parametri

/usr/bin/time --format='%C took %e seconds' sleep 3
sleep 3 took 3.00 seconds

Si noti che è necessario specificare il percorso per time, altrimenti per impostazione predefinita si utilizzerà la shell integrata.


4
notare che: il percorso è importante. Non usare solo 'time' in bash. Invece, usa / usr / bin / time
CodeFarmer il

1
qual è la differenza se /usr/binè nel loro PERCORSO?
Galois,

@galois La differenza è che senza il percorso esplicito timeverrà utilizzata l'utilità integrata della shell .
Kusalananda

È inoltre possibile utilizzare command timeo \timeeseguire l'utilità anziché il build-in.
forcefsck

0

@galois: Le varie shell hanno una manciata di comandi "integrati" che hanno la precedenza su qualsiasi cosa nel percorso. Normalmente questo è vantaggioso; gli incorporati tenderanno a funzionare più velocemente (perché non si chiama un file esterno) e in genere danno il risultato desiderato (cioè, nel caso del comando time normalmente non ti interessa quale versione stai usando, a meno che tu non voglia usare il " --format "flag).

Quindi "tempo" senza caratteri speciali (come /) per farlo sembrare un percorso finirà per eseguire il built-in, indipendentemente dall'aspetto del PERCORSO.

Per forzare la shell a utilizzare il comando time esterno, è necessario fornire il percorso

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.