Thời gian thực hiện lệnh

Một phần của tài liệu Giáo trình sử dụng quản trị và lập trình UNIX LINUX (Trang 41 - 43)

Lệnh time cho ta biết được thời gian thực hiện một lệnh hoặc thời gian thực hiện một chương trình. Sau đây là một số trường hợp sử dụng lệnh time trong các môi trường UNIX và shell khác nhau.

a. Trong UNIX BSD và Bourne Shell

Hãy gõ lệnh :

$ time find / -name tệp -print > result<RETURN> Ta sẽ nhận được các thông tin như sau trên màn hình:

55.6 real 1.5 user 18.3 sys

Thời gian được đo bằng giây. Ý nghĩa của chúng như sau:

real là tổng thời gian thực tế, từ lúc bấm <RETURN> đến lúc dấu nhắc shell trở lại user là thời gian chỉ dùng để thực hiện lệnh

sys là thời gian mà lõi UNIX sử dụng để quản trị lệnh này Ta sẽ luôn luôn có:

real >= user + sys Chú ý:

Nếu ta muốn thu các kết quả của lệnh time vào trong một tệp, cần phải trộn luồng dữ liệu đầu ra stdout với luồng thông báo lỗi stderr và chỉnh hướng vào tệp đó:

$ time cat * 2 > tệp_thời_gian<RETURN> Ba giá trị thời gian thực hiện ở trên sẽ được ghi vào "tệp_thời_gian".

b. Trong UNIX BSD và C Shell

Ta cũng sẽ có kết quả như trên bằng lệnh /bin/time.

c. Trong UNIX SYSTEM V và Bourne Shell

Ta cũng sẽ nhận được những thông tin như cũ bằng lệnh time, nhưng chúng được sắp xếp theo dạng cột và lệnh time này là ngoại trú.

d. Trong UNIX SYSTEM V và C Shell

Ở đây, lệnh time của C Shell là nội trú.

Ta cũng sẽ nhận được những thông tin như trong Bourne Shell, dưới một dạng trình bày khác và với những thông tin bổ sung có thể tính toán. Ví dụ:

% time a.out > res_prog

Kết quả của chương trình "a.out" sẽ đưa ra tệp "res_prog" và màn hình hiển thị như sau:

1.4u 18.2s 0:56 34% 0+386k 1181+410io 580pf+0w

Giải thích kết quả trên:

1.4u tương ứng với thời gian "user" đã nói 18.2s tương ứng với thời gian "system" đã nói 0:56 tương ứng với thời gian "real" đã nói

34 % là tỷ lệ của thời gian "user" + thời gian "system" trên thời gian "real" 0 cho biết việc chia sẻ bộ nhớ chính, tính trung bình và bằng đơn vị kB 386k vùng bộ nhớ không bị chia sẻ, tính trung bình và bằng đơn vị kB 1181 số block dữ liệu được đọc vào

410io số block dữ liệu được đưa ra 590pf số các "page faults"

0w số các "swaps"

Trong UNIX BSD có một lệnh pagesize cho biết kích cỡ của một trang trong bộ nhớ, ví dụ:

% pagesize<RETURN> 8192

Trong trường hợp trên, kích cỡ một trang như vậy là 8 kB.

Nếu muốn ghi kết quả của lệnh time vào tệp “res_time”, trong C Shell cần thực hiện lệnh:

% (time a.out > /dev/tty) >& res_time<RETURN> (adsbygoogle = window.adsbygoogle || []).push({});

Các kết quả của chương trình "a.out" sẽ xuất hiện trong tệp /dev/tty, tức màn hình.

Để ghi vào "tệp_thời_gian" những kết quả của chương trình "a.out", sau đó là những thời gian thực hiện tương ứng, ta phải gõ:

trong Bourne Shell:

$ (time a.out > tệp_thời_gian) 2>> tệp_thời_gian trong C Shell:

% time a.out >& tệp_thời_gian

Một phần của tài liệu Giáo trình sử dụng quản trị và lập trình UNIX LINUX (Trang 41 - 43)