2009-11-01 35 views

Trả lời

53

Đừng quên rằng có một sự khác biệt giữa bash của BUILTIN time (mà nên được gọi là theo mặc định khi bạn làm time command) và /usr/bin/time (yêu cầu bạn gọi nó bằng đường dẫn đầy đủ của nó).

Bản dựng time luôn in thành tiêu bản, nhưng /usr/bin/time sẽ cho phép bạn gửi đầu ra của thời gian tới một tệp cụ thể, do đó bạn không can thiệp vào luồng stderr của lệnh đã thực hiện. Ngoài ra, định dạng của /usr/bin/time có thể định cấu hình trên dòng lệnh hoặc theo biến môi trường TIME, trong khi định dạng của bash là timechỉ được định cấu hình bởi biến môi trường TIMEFORMAT.

$ time factor 1234567889234567891 # builtin 
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 # log to file `timed` 
1234567889234567891: 142662263 8653780357 
$ cat timed 
1.56user 0.02system 0:02.49elapsed 63%CPU (0avgtext+0avgdata 0maxresident)k 
0inputs+0outputs (0major+217minor)pagefaults 0swaps 
+0

Từ 'man bash':" Biến TIMEFORMAT có thể được đặt thành chuỗi định dạng chỉ định cách hiển thị thông tin thời gian " –

+0

Rất tiếc - tôi * nghĩ * có một số cách để định dạng nó, nhưng tôi đã bỏ lỡ nó trong 'thời gian trợ giúp' bởi vì tôi chỉ liếc qua nó và tôi nghĩ đó là một đối số dòng lệnh. Tôi sẽ cập nhật câu trả lời. –

+0

-1 Điều này dường như không trả lời được câu hỏi nào cả. –

21
[email protected]:~# time [command] 

Nó cũng phân biệt giữa thời gian thực sử dụng và thời gian hệ thống sử dụng.

+0

Đó chắc chắn là câu trả lời cơ bản - nhưng có một số biến chứng nếu bạn muốn nhìn thấy đầu ra lỗi từ lệnh và chưa gửi thông tin thời gian để đầu ra tiêu chuẩn như các câu hỏi không. Lệnh thời gian ghi vào stderr. Những gì bạn đề xuất có lẽ là đủ chính xác - do đó +1 của tôi. –

+2

'time' ghi vào tty, không phải là stderr. Mà tôi đoán làm cho mọi thứ tồi tệ hơn. – mob

90

time là lệnh tích hợp trong hầu hết các shell ghi thông tin thời gian thực hiện vào tty.

Bạn cũng có thể thử một cái gì đó giống như

start_time=`date +%s` 
<command-to-execute> 
end_time=`date +%s` 
echo execution time was `expr $end_time - $start_time` s. 

Hoặc trong bash:

start_time=`date +%s` 
<command-to-execute> && echo run time is $(expr `date +%s` - $start_time) s 
+6

tuyệt vời, linh hoạt hơn câu trả lời được chấp nhận – maazza

+0

đồng ý với Maaza, tính linh hoạt này cho phép tôi đo thời gian của toàn bộ các lệnh. – Nath

+0

Có thể áp dụng các khía cạnh linux xung quanh bất kỳ lệnh linux nào để tính toán thực thi –

2

Trong zsh bạn có thể sử dụng

=time ... 

Trong bash hoặc zsh bạn có thể sử dụng

command time ... 

Những (bằng cơ chế khác nhau) buộc một lệnh bên ngoài để được sử dụng.

6

Thêm vào câu trả lời @ đám đông của:

Phụ thêm %N-date +%s cho chúng ta nanosecond chính xác:

start=`date +%s%N`;<command>;end=`date +%s%N`;echo `expr $end - $start` 
4

Nếu tôi bắt đầu một quá trình dài chạy như một bản sao hoặc băm và tôi muốn biết sau bao lâu, tôi chỉ làm điều này:

$ date; sha1sum reallybigfile.txt; date 

Điều này sẽ dẫn đến kết quả sau:

Tue Jun 2 21:16:03 PDT 2015 
5089a8e475cc41b2672982f690e5221469390bc0 reallybigfile.txt 
Tue Jun 2 21:33:54 PDT 2015 

Được cấp, như được triển khai ở đây không chính xác lắm và không tính thời gian đã trôi qua. Nhưng nó bẩn đơn giản và đôi khi tất cả những gì bạn cần.

6

Để đo lường đồng bằng đường thẳng, hãy thử gnonom.

Đây là tiện ích dòng lệnh, hơi giống như ts của những người khác, để thêm thông tin dấu thời gian vào đầu ra tiêu chuẩn của lệnh khác.Hữu ích cho các quy trình chạy dài, nơi bạn muốn có một hồ sơ lịch sử về những gì mất quá nhiều thời gian.

Đường ống bất kỳ thứ gì vào gnomon sẽ thêm một dấu thời gian vào mỗi dòng, cho biết dòng đó là dòng cuối cùng trong vùng đệm - tức là mất bao lâu để dòng tiếp theo xuất hiện. Theo mặc định, gnomon sẽ hiển thị số giây trôi qua giữa mỗi dòng, nhưng đó là cấu hình.

gnomon demo

Các vấn đề liên quan