Câu trả lời:
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 thời gian và 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ùng và sys 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.
Bằng cách sử dụng tệp thực thi time
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 được tích hợp sẵn.
/usr/bin
là trong PATH của họ?
time
tiện ích tích hợp của shell sẽ được sử dụng.
command time
hoặc \time
để thực thi tiện ích thay vì tích hợp.
@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