دستور time را می توان به عنوان ابزاری برای نشان دادن زمان اجرای برنامه ها در پارامتر های زیر معرفی کرد :
1 - زمان صرف شده توسط برنامه در مد کاربری (user mode)
2 - زمان صرف شده توسط برنامه در مد هسته
3 - متوسط حافظهٔ (RAM) استفاده شده در برنامه
این دستور به عنوان یک ابزار اختصاصی به این منظور در لینوکس مورد استفاده قرار می گیرد.
“time” نام برنامه را به عنوان ورودی دریافت می کند و اطلاعاتی را در رابطه با منابعی که برنامه مورد استفاده قرار داده را در خروجی می آورد. همچنین این فرمان یک پیام هشدار به علاوهٔ exit status را در خروجی نشان می دهد. در صورتیکه exit status در پایان خروجی عددی غیر از صفر را نشان دهد برنامه با خطا مواجه شده است.
بعد از اجرای هر برنامه، دستور زیر را برای بررسی صحتِ اجرای دستور در ترمینال صادر کنید (این کار مقدار exit status را به شما نشان می دهد) :
زمانیکه خروجی عدد 0 را نشان دهد این بدان معنیست که برنامه به درستی اجرا شده ولی خروجی غیر صفر نشانگر عدم اجرای صحیح فرمان می باشد.
ترکیب زیر فرم کلی این دستور را نشان می دهد :
فرمان time گزینه هایی را در اختیار کاربر قرار می دهد که در ادامه شما را با برخی از آن ها آشنا می کنیم :
-v , –verbose : این گزینه زمانی استفاده می شود که خروجی با جزئیات بیشتری مورد نیاز است. به مثال پیش رو توجه کنید :
–quite: از نمایش exit status در خروجی جلوگیری به عمل می آورد.
-f , –format: کاربر با استفاده از این گزینه می تواند خروجی را بصورتی که می خواهد کنترل (قالب بندی) کند.
-p , –portability : این گزینه قالب خروجی را طبق استاندارد POSIX ارائه می دهد.
Real %e
Use %U
Sys %S
:-o FILE, –output=FILE این گزینه به کاربر این امکان را می دهد که خروجی time را به یک فایل هدایت و در آن ذخیره کند. همچنین به time اجازه بازنویسی بر روی فایل FILE را می دهد.
: -a ، –append این گزینه به time این اجازه را می دهد که اطلاعات را به فایل FILE اضافه و از بازنویسی اطلاعات اجتناب کند.
زمانیکه فرمان time اجرا می شود ، خروجی چیزی شبیه به این مثال است :
همانطور که در بالا نشان داده شده است، دو خط آخرِ خروجی منابعی که توسط برنامه یا دستورِ مورد نظر استفاده شده است را نمایش می دهد.
خروجی پیش فرض این فرمان بدون در نظر گرفتن هیچ گزینهٔ اضافی به سبک زیر خواهد بود :
معمولا گزینه ها به کاربر اجازه تصمیم گیری در مورد نحوه گرفتنِ خروجی از برنامه به شیوه ای که مد نظر دارد را می دهد. خروجی معمولا شامل منابع خاصی است که در قالب text ساده نمایش داده می شود.
علامت درصد (‘%’) کاراکتر بعدی را به عنوان منبعِ موردِ نظر تفسیر می کند. علامت بک اسلش (‘\’) به چاپ یک کارکتر بعد از خروجی ترجمه می شود. علامت ‘\t’ خروجی را پس از یک tab نشان می دهد. همچنین علامت ‘\n’ خروجی را در خط جدیدی چاپ و علامت ‘\\’ یک بک اسلش در خروجی چاپ می کند.
در اینجا به بخشی از منابعی که ممکن است یک برنامه استفاده کند اشاره شده است :
c- نام و آرگومانت کامند time
E- زمان واقعی سپری شده توسط پروسس به ثانیه:دقیقه:ساعت.
I- تعداد فایل سیستم هایی که توسط پروسس وارد می شوند.
M- بیشینهٔ اندازه پروسس های موجود در lifetime به کیلوبایت.
P- درصد cpuیی که برنامه مورد استفاده قرار داده است. لازم به ذکر است این میزان تنها زمان کاربر + سیستم که توسط زمان اجرایی نهایی بصورت جدا از هم هستند را نشان می دهد. همچنین علامت درصد را نیز چاپ می کند.
W- مقدار زمان هایی که پروسس از swap استفاده کرده است.
Z- اندازه page سیستم به بایت. این یک مقدار ثابت سیستمی است، اما بین سیستم های مختلف متفاوت است.
e- زمان واقعی سپری شده توسط پروسس به ثانیه.
K- تعداد سیگنال هایی که به پروسس انتقال داده شده است.
x- نتیجه exit status فرمان یا برنامه.
و تعداد زیاد دیگری از منابع سیستمی که توسط time می توان از آنها مطلع شد.
نکته ای که در هنگام استفاده از دستور time وجود دارد به کار گرفتن مسیر کامل آن به جای استفاده از فرمان time است. اگر بخواهیم از گزینه ها استفاده کنیم بدون ذکر کامل مسیر فرمان، خطایی مانند خطای زیر را خواهید دید :
همانگونه که در مثال بالا نشان داده شده است، فرمان time زمانیکه بدون مسیر کامل (/usr/bin/time) استفاده می شود با افزودن گزینهٔ –f در خروجی خود خطا می دهد. همچنین فرمت خروجی نه آن سبکی که ما به عنوان قالب مشخص کرده بودیم را به نمایش می گذازد و نه فرم پیش فرض را به خود گرفته است. زمانیکه فرمان time بدون مسیر کامل (/usr/bin/time) اجرا می شود، در حقیقت دستور built-in هست که bash shell آن را اجرا می کند.
برای کسب اطلاعات بیشتر در رابطه با این دستور می تواند راهنمای آن را با اجرای دستور man time مطالعه نمائید. همچنین با صدور help time اطلاعاتی که دستور built-in بش در رابطه با این فرمان دارد را می توان مشاهده کرد.
همانگونه که اشاره شد نوع فرمان time در هر دو شکلی که بیان شده متفاوت است. در اولی به مسیر و در دومی به built-in بودن این فرمان اشاره شده است.
1 - زمان صرف شده توسط برنامه در مد کاربری (user mode)
2 - زمان صرف شده توسط برنامه در مد هسته
3 - متوسط حافظهٔ (RAM) استفاده شده در برنامه
این دستور به عنوان یک ابزار اختصاصی به این منظور در لینوکس مورد استفاده قرار می گیرد.
“time” نام برنامه را به عنوان ورودی دریافت می کند و اطلاعاتی را در رابطه با منابعی که برنامه مورد استفاده قرار داده را در خروجی می آورد. همچنین این فرمان یک پیام هشدار به علاوهٔ exit status را در خروجی نشان می دهد. در صورتیکه exit status در پایان خروجی عددی غیر از صفر را نشان دهد برنامه با خطا مواجه شده است.
بعد از اجرای هر برنامه، دستور زیر را برای بررسی صحتِ اجرای دستور در ترمینال صادر کنید (این کار مقدار exit status را به شما نشان می دهد) :
کد PHP:
echo $?
کد PHP:
star@galaxy:~$ time date
Mon Mar 5 20:03:39 IRST 2012
real 0m0.002s
user 0m0.000s
sys 0m0.000s
star@galaxy:~$ time datz
datz: command not found
real 0m0.159s
user 0m0.124s
sys 0m0.036s
کد PHP:
/usr/bin/time [options] program [arguments]
-v , –verbose : این گزینه زمانی استفاده می شود که خروجی با جزئیات بیشتری مورد نیاز است. به مثال پیش رو توجه کنید :
کد PHP:
star@galaxy:~$ /usr/bin/time -v date
Mon Mar 5 20:18:41 IRST 2012
Command being timed: “date”
User time (seconds): 0.00
System time (seconds): 0.00
Percent of CPU this job got: 0%
Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.00
Average shared text size (kbytes): 0
Average unshared data size (kbytes): 0
Average stack size (kbytes): 0
Average total size (kbytes): 0
Maximum resident set size (kbytes): 2768
Average resident set size (kbytes): 0
Major (requiring I/O) page faults: 0
Minor (reclaiming a frame) page faults: 228
Voluntary context switches: 1
Involuntary context switches: 1
Swaps: 0
File system inputs: 0
File system outputs: 0
Socket messages sent: 0
Socket messages received: 0
Signals delivered: 0
Page size (bytes): 4096
Exit status: 0
-f , –format: کاربر با استفاده از این گزینه می تواند خروجی را بصورتی که می خواهد کنترل (قالب بندی) کند.
-p , –portability : این گزینه قالب خروجی را طبق استاندارد POSIX ارائه می دهد.
Real %e
Use %U
Sys %S
:-o FILE, –output=FILE این گزینه به کاربر این امکان را می دهد که خروجی time را به یک فایل هدایت و در آن ذخیره کند. همچنین به time اجازه بازنویسی بر روی فایل FILE را می دهد.
: -a ، –append این گزینه به time این اجازه را می دهد که اطلاعات را به فایل FILE اضافه و از بازنویسی اطلاعات اجتناب کند.
زمانیکه فرمان time اجرا می شود ، خروجی چیزی شبیه به این مثال است :
کد PHP:
star@galaxy:~$ /usr/bin/time ls
Desktop Public
Documents spinner
0.00user 0.00system 0:00.00elapsed 0%CPU (0avgtext+0avgdata 3344maxresident)k
0inputs+0outputs (0major+269minor)pagefaults 0swaps
خروجی پیش فرض این فرمان بدون در نظر گرفتن هیچ گزینهٔ اضافی به سبک زیر خواهد بود :
کد PHP:
Uuser %Ssystem %Eelapsed %PCPU (%Xtext+%Ddata %Mmax) K
%Iinputs+%Ooutputs (%Fmajor+%Rminor)pagefaults %Wswaps
علامت درصد (‘%’) کاراکتر بعدی را به عنوان منبعِ موردِ نظر تفسیر می کند. علامت بک اسلش (‘\’) به چاپ یک کارکتر بعد از خروجی ترجمه می شود. علامت ‘\t’ خروجی را پس از یک tab نشان می دهد. همچنین علامت ‘\n’ خروجی را در خط جدیدی چاپ و علامت ‘\\’ یک بک اسلش در خروجی چاپ می کند.
در اینجا به بخشی از منابعی که ممکن است یک برنامه استفاده کند اشاره شده است :
c- نام و آرگومانت کامند time
E- زمان واقعی سپری شده توسط پروسس به ثانیه:دقیقه:ساعت.
I- تعداد فایل سیستم هایی که توسط پروسس وارد می شوند.
M- بیشینهٔ اندازه پروسس های موجود در lifetime به کیلوبایت.
P- درصد cpuیی که برنامه مورد استفاده قرار داده است. لازم به ذکر است این میزان تنها زمان کاربر + سیستم که توسط زمان اجرایی نهایی بصورت جدا از هم هستند را نشان می دهد. همچنین علامت درصد را نیز چاپ می کند.
W- مقدار زمان هایی که پروسس از swap استفاده کرده است.
Z- اندازه page سیستم به بایت. این یک مقدار ثابت سیستمی است، اما بین سیستم های مختلف متفاوت است.
e- زمان واقعی سپری شده توسط پروسس به ثانیه.
K- تعداد سیگنال هایی که به پروسس انتقال داده شده است.
x- نتیجه exit status فرمان یا برنامه.
و تعداد زیاد دیگری از منابع سیستمی که توسط time می توان از آنها مطلع شد.
نکته ای که در هنگام استفاده از دستور time وجود دارد به کار گرفتن مسیر کامل آن به جای استفاده از فرمان time است. اگر بخواهیم از گزینه ها استفاده کنیم بدون ذکر کامل مسیر فرمان، خطایی مانند خطای زیر را خواهید دید :
کد PHP:
$ time -f “\t%U user,\t%S system,\t%x status” date
-f: command not found
real 0m0.255s
user 0m0.230s
sys 0m0.030
برای کسب اطلاعات بیشتر در رابطه با این دستور می تواند راهنمای آن را با اجرای دستور man time مطالعه نمائید. همچنین با صدور help time اطلاعاتی که دستور built-in بش در رابطه با این فرمان دارد را می توان مشاهده کرد.
کد PHP:
star@galaxy:~$ type /usr/bin/time
/usr/bin/time is /usr/bin/time
star@galaxy:~$ type time
time is a shell keyword