it-swarm-vi.com

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

(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.
71
ripper234

Hãy thử chỉ time thay vì timethis.

Mặc dù lưu ý rằng thường có phiên bản dựng sẵn của Shell 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" là gì khi sử dụng "thời gian" trong dòng lệnh , nhưng tóm lại: real có nghĩa là "Đồng hồ treo tường", trong khi người dùng sys hiển thị đồng hồ CPU thời gian, phân chia giữa mã thông thường và các cuộc gọi hệ thống.

103
mattdm

Bằng cách sử dụng time thực thi thay 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 tích hợp.

26
forcefsck

@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

0
Tom Payerle