Śledzić czas wykonywania polecenia w systemie UNIX / LINUX?

118

Czy w systemie UNIX / LINUX można łatwo śledzić czas potrzebny na polecenie?

OneChillDude
źródło

Odpowiedzi:

165

Tak, użyj time <command>, na przykład

time ls

Skonsultuj się, man timeaby uzyskać więcej opcji. Link .

squiguy
źródło
4
I znaczenie czasu rzeczywistego / użytkownika / sys jest ładnie omówione tutaj
prideout
Ta odpowiedź jest niedokładna dla użytkowników basha w systemie Linux. Strona podręcznika dokumentuje polecenie Gnu time, ale czas jest wbudowanym elementem bash, który nie ma wszystkich udokumentowanych tam opcji.
Ben Crowell
7

Posługiwać się

/usr/bin/time 

zamiast tego czas wbudowany w bash: jest bardziej konfigurowalny AFAIK.

e.g. /usr/bin/time --format=' \n---- \nelapsed time is %e'ls
Paolinux
źródło
O ile wiem, jest to ustawienie domyślne. Tak było w przypadku systemów CentOS 6, CentOS 7 i Debian 8, które sprawdziłem: user@host:~$ which time /usr/bin/time Wygląda na wersję 1.7 czasu GNU.
Toby,
4
@Toby: Mimo że "który" mówi, że to / usr / bin / time, w bash, wbudowane nadpisuje to. Jeśli robię time -f "\t%E real" lsw bash, pojawia się błąd, ale działa, jeśli tak /usr/bin/time -f "\t%E real" ls.
Ben Crowell
1
Masz rację. To bardzo interesujące i pouczające. Dzięki!
Toby
1
Nie używaj which. Użyj type -a:$ which time /usr/bin/time $ type -a time time is a shell keyword time is /usr/bin/time
Daniel-Dane
Pamiętaj, że używanie /usr/bin/timezapobiega używaniu aliasów bash. Do tego timepotrzebne jest wbudowane bash , w przeciwnym razie pojawi się błąd cannot run my_alias: No such file or directory.
Jamie S
6

Oto jak sleepwygląda jedna sekunda w czasie time:

$ time sleep 1

real    0m1.001s
user    0m0.000s
sys 0m0.000s
Guillaume Chevalier
źródło