Làm thế nào để tôi có thời gian một lệnh cụ thể?


67

(Tương đương với linux của Time This.exe)

Cái gì đó như:

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

wget foo.com took 3 seconds.

Câu trả lời:


93

Hãy thử chỉ timethay vì timethis.

Mặc dù lưu ý rằng thường có phiên bản dựng sẵn của thời gian phiên bản nhị phân, sẽ cho kết quả ở các định dạng khác nhau:

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

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

đấu với

$ \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

Không giống như chương trình "timethis" của bạn, bạn nhận lại ba giá trị. Điều đó đã bị hỏng trong "thời gian hệ thống" khi sử dụng "thời gian" trong dòng lệnh , nhưng tóm lại: real có nghĩa là "thời gian đồng hồ treo tường", trong khi người dùngsys hiển thị thời gian đồng hồ CPU, phân chia giữa các lệnh gọi hệ thống và mã thông thường.


26

Bằng cách sử dụng tệp thực thi timethay vì dựng sẵn shell, bạn có thể chỉ định định dạng và giá trị đầu ra. Ví dụ: lấy thời gian thực trôi qua cùng với tên và tham số lệnh

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

Lưu ý rằng bạn phải chỉ định đường dẫn cho time, nếu không bạn sẽ mặc định sử dụng shell được tích hợp sẵn.


4
Lưu ý rằng: đường dẫn là quan trọng. Đừng chỉ sử dụng 'thời gian' trong bash. Thay vào đó, hãy sử dụng / usr / bin / time
CodeFarmer

1
sự khác biệt nếu /usr/binlà trong PATH của họ?
galois

@galois Sự khác biệt là không có đường dẫn rõ ràng, timetiện ích tích hợp của shell sẽ được sử dụng.
Kusalananda

Cũng có thể sử dụng command timehoặc \timeđể thực thi tiện ích thay vì tích hợp.
Forcefsck

0

@galois: Các shell khác nhau có một số lệnh "tích hợp" được ưu tiên hơn bất kỳ thứ gì trong đường dẫn. Thông thường đây là lợi thế; các phần dựng sẵn sẽ có xu hướng chạy nhanh hơn (vì không gọi tệp bên ngoài) và thường cho kết quả mong muốn (nghĩa là trong trường hợp lệnh thời gian bạn thường không quan tâm bạn đang sử dụng phiên bản nào, trừ khi bạn muốn sử dụng " --format "cờ).

Vì vậy, "thời gian" không có bất kỳ ký tự đặc biệt nào (như /) để làm cho nó trông giống như một đường dẫn sẽ kết thúc chạy tích hợp, bất kể PATH của bạn trông như thế nào.

Để buộc shell sử dụng lệnh thời gian bên ngoài, bạn phải cung cấp đường dẫn

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.