Jangan lupa bahwa ada perbedaan antara bash's builtin time
(yang harus dipanggil secara default saat Anda melakukannya time command
) dan /usr/bin/time
(yang mengharuskan Anda untuk memanggilnya dengan jalur lengkapnya).
Builtin time
selalu mencetak ke stderr, tetapi /usr/bin/time
akan memungkinkan Anda untuk mengirim keluaran waktu ke file tertentu, jadi Anda tidak mengganggu aliran stderr perintah yang dieksekusi. Selain itu, /usr/bin/time
format dapat dikonfigurasi pada baris perintah atau oleh variabel lingkungan TIME
, sedangkan time
format bawaan bash hanya dikonfigurasi oleh TIMEFORMAT
variabel lingkungan.
$ time factor 1234567889234567891
1234567889234567891: 142662263 8653780357
real 0m3.194s
user 0m1.596s
sys 0m0.004s
$ /usr/bin/time factor 1234567889234567891
1234567889234567891: 142662263 8653780357
1.54user 0.00system 0:02.69elapsed 57%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (0major+215minor)pagefaults 0swaps
$ /usr/bin/time -o timed factor 1234567889234567891
1234567889234567891: 142662263 8653780357
$ cat timed
1.56user 0.02system 0:02.49elapsed 63%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (0major+217minor)pagefaults 0swaps
man bash
: "Variabel TIMEFORMAT dapat disetel ke string format yang menentukan bagaimana informasi pengaturan waktu harus ditampilkan"help time
karena saya hanya melihatnya sekilas dan saya pikir itu adalah argumen baris perintah. Saya akan memperbarui jawabannya.time
adalah perintah bawaan di sebagian besar shell yang menulis informasi waktu eksekusi ke tty.Anda juga bisa mencoba sesuatu seperti
start_time=`date +%s` <command-to-execute> end_time=`date +%s` echo execution time was `expr $end_time - $start_time` s.
Atau di
bash
:start_time=`date +%s` <command-to-execute> && echo run time is $(expr `date +%s` - $start_time) s
sumber
time
menggunakan milidetik. Dan jika Anda ingintime ( command1 ; command2 ; command3 )
mengatur waktu beberapa perintah bersama-sama tanpa harus menggunakan variabel dan kalkulasi, Anda dapat menggunakan tanda kurung: Anda bahkan dapat mengatur waktunya secara individual dengan total waktu, seperti:time ( time command1 ; time command2 ; time command3 )
Tentu saja, jika Anda menginginkan sekitar dua puluh perintah, mungkin lebih baik menggunakan solusi jawaban ini. Tapi kemudian, Anda harus mulai berpikir untuk meletakkan semua perintah Anda dalam sebuah skrip ...root@hostname:~# time [command]
Ini juga membedakan antara waktu nyata yang digunakan dan waktu sistem yang digunakan.
sumber
time
menulis ke tty, bukan stderr. Yang kurasa memperburuk keadaan.Untuk pengukuran delta baris demi baris, coba gnonom .
sumber
Menambahkan jawaban @ mob:
Menambahkan
%N
untukdate +%s
memberi kita akurasi nanodetik:start=`date +%s%N`;<command>;end=`date +%s%N`;echo `expr $end - $start`
sumber
Jika saya memulai proses yang berjalan lama seperti salinan atau hash dan saya ingin tahu nanti berapa lama, saya hanya melakukan ini:
Yang akan menghasilkan keluaran berikut:
Memang, seperti yang diterapkan di sini, ini tidak terlalu tepat dan tidak menghitung waktu yang telah berlalu. Tapi itu sangat sederhana dan terkadang semua yang Anda butuhkan.
sumber
Dalam zsh Anda dapat menggunakan
Di bash atau zsh, Anda dapat menggunakan
command time ...
Ini (dengan mekanisme yang berbeda) memaksa perintah eksternal untuk digunakan.
sumber
Hanya
ps -o etime= -p "<your_process_pid>"
sumber