گاهی اوقات نیاز داریم بدانیم یک دستور یا اسکریپت چقدر زمان برای اجرا نیاز دارد. سادهترین روش، ثبت زمان شروع و پایان و محاسبه تفاوت آنهاست. حتی میتوانید از اپلیکیشن ساعت یا کرنومتر استفاده کنید. اما در لینوکس میتوانید همه این کارها را با دستور time به راحتی انجام دهید.
دستور time یکی از ابزارهای کوچک و مفید خط فرمان است که زمان اجرای برنامهها یا اسکریپتها را اندازهگیری میکند. توجه داشته باشید که این دستور هیچ ارتباطی با دستور date ندارد و صرفاً زمان اجرا را گزارش میدهد.
در این آموزش، با دستور time کار میکنیم و خروجی آن را بررسی میکنیم. تمام مثالها با Bash در لینوکس تست شدهاند، مگر اینکه ذکر شده باشد.
مرحله ۱ — زمانبندی اجرای دستور
برای اندازهگیری زمان اجرای یک دستور، کافیست قبل از دستور مورد نظر خود، time را قرار دهید:
دستور time ممکن است به دو صورت روی سیستم شما موجود باشد:
-
نسخه داخلی Shell: در Bash یا Zsh موجود است.
-
نسخه GNU time: یک دستور مستقل که پارامترهای پیشرفتهتری دارد و معمولاً در مسیر
/usr/bin/timeقرار دارد.
برای بررسی نسخههای موجود روی سیستم خود، دستور زیر را اجرا کنید:
خروجی ممکن است شبیه به این باشد:
اگر میخواهید از نسخه GNU استفاده کنید، کافیست قبل از دستور یک بکاسلش قرار دهید:
توجه: Shell fish نسخه داخلی
timeندارد و باید GNU time را نصب کنید.
مثال عملی با دستور tree
فرض کنید میخواهید زمان اجرای دستور tree روی شاخه ریشه / را اندازهگیری کنید. ابتدا اطمینان حاصل کنید که دستور tree نصب است:
در اوبونتو یا دبیان:
در macOS با Homebrew:
حالا زمان اجرای دستور را اندازه بگیرید:
پس از اجرای دستور، خروجی شامل زمان مصرفشده نمایش داده میشود، مثلاً:
-
user: زمان پردازش در حالت کاربری (User Mode) -
system: زمان پردازش در حالت کرنل (Kernel Mode) -
cpu: درصد استفاده CPU توسط دستور -
total: زمان کل اجرای دستور به ثانیه
اگر دستور را با CTRL+C متوقف کنید، دستور time همچنان زمان مصرفشده تا آن لحظه را نمایش میدهد.
مرحله ۲ — درک مصرف منابع
خروجی دستور time سه مقدار اصلی دارد:
-
User time: زمانی که CPU برای اجرای دستور در حالت کاربری صرف کرده است.
-
System time: زمانی که CPU در حالت کرنل صرف کرده است.
-
CPU usage: درصد استفاده از CPU توسط دستور.
تفاوت User و System در دسترسی به منابع سیستم است:
-
حالت کاربری: دستورات مستقیم به سختافزار دسترسی ندارند و از APIهای سیستم استفاده میکنند.
-
حالت کرنل: کد دسترسی کامل به سختافزار و منابع سیستم دارد. اگر در این حالت خطایی رخ دهد، ممکن است کل سیستم را تحت تأثیر قرار دهد.
جمعبندی
با استفاده از دستور time میتوانید به راحتی زمان اجرای دستورات و اسکریپتها را بدون نوشتن هیچ کد اضافی بسنجید. این دستور به شما اطلاعات دقیقی از زمان مصرفشده در حالت کاربری، کرنل و میزان استفاده CPU ارائه میدهد و ابزار بسیار مفیدی برای بهینهسازی و بررسی عملکرد برنامهها در لینوکس است.

