رفتن به محتوای اصلی
دیدگاه کلود | ارائه‌کننده سرورهای ابری و اختصاصی
آموزش استفاده از دستور time در لینوکس برای اندازه‌گیری زمان اجرای دستورات

آموزش استفاده از دستور time در لینوکس برای اندازه‌گیری زمان اجرای دستورات

گاهی اوقات نیاز داریم بدانیم یک دستور یا اسکریپت چقدر زمان برای اجرا نیاز دارد. ساده‌ترین روش، ثبت زمان شروع و پایان و محاسبه تفاوت آن‌هاست. حتی می‌توانید از اپلیکیشن ساعت یا کرنومتر استفاده کنید. اما در لینوکس می‌توانید همه این کارها را با دستور time به راحتی انجام دهید.

گاهی اوقات نیاز داریم بدانیم یک دستور یا اسکریپت چقدر زمان برای اجرا نیاز دارد. ساده‌ترین روش، ثبت زمان شروع و پایان و محاسبه تفاوت آن‌هاست. حتی می‌توانید از اپلیکیشن ساعت یا کرنومتر استفاده کنید. اما در لینوکس می‌توانید همه این کارها را با دستور time به راحتی انجام دهید.

دستور time یکی از ابزارهای کوچک و مفید خط فرمان است که زمان اجرای برنامه‌ها یا اسکریپت‌ها را اندازه‌گیری می‌کند. توجه داشته باشید که این دستور هیچ ارتباطی با دستور date ندارد و صرفاً زمان اجرا را گزارش می‌دهد.

در این آموزش، با دستور time کار می‌کنیم و خروجی آن را بررسی می‌کنیم. تمام مثال‌ها با Bash در لینوکس تست شده‌اند، مگر اینکه ذکر شده باشد.


مرحله ۱ — زمان‌بندی اجرای دستور

برای اندازه‌گیری زمان اجرای یک دستور، کافیست قبل از دستور مورد نظر خود، time را قرار دهید:

 
time دستور

دستور time ممکن است به دو صورت روی سیستم شما موجود باشد:

  1. نسخه داخلی Shell: در Bash یا Zsh موجود است.

  2. نسخه GNU time: یک دستور مستقل که پارامترهای پیشرفته‌تری دارد و معمولاً در مسیر /usr/bin/time قرار دارد.

برای بررسی نسخه‌های موجود روی سیستم خود، دستور زیر را اجرا کنید:

 
type -a time

خروجی ممکن است شبیه به این باشد:

 
time is a shell keyword time is /usr/bin/time

اگر می‌خواهید از نسخه GNU استفاده کنید، کافیست قبل از دستور یک بک‌اسلش قرار دهید:

 
\time دستور

توجه: Shell fish نسخه داخلی time ندارد و باید GNU time را نصب کنید.


مثال عملی با دستور tree

فرض کنید می‌خواهید زمان اجرای دستور tree روی شاخه ریشه / را اندازه‌گیری کنید. ابتدا اطمینان حاصل کنید که دستور tree نصب است:

در اوبونتو یا دبیان:

 
sudo apt install tree

در macOS با Homebrew:

 
brew install tree

حالا زمان اجرای دستور را اندازه بگیرید:

 
time tree /

پس از اجرای دستور، خروجی شامل زمان مصرف‌شده نمایش داده می‌شود، مثلاً:

 
tree / 12.24s user 10.37s system 66% cpu 33.827 total
  • user: زمان پردازش در حالت کاربری (User Mode)

  • system: زمان پردازش در حالت کرنل (Kernel Mode)

  • cpu: درصد استفاده CPU توسط دستور

  • total: زمان کل اجرای دستور به ثانیه

اگر دستور را با CTRL+C متوقف کنید، دستور time همچنان زمان مصرف‌شده تا آن لحظه را نمایش می‌دهد.


مرحله ۲ — درک مصرف منابع

خروجی دستور time سه مقدار اصلی دارد:

  1. User time: زمانی که CPU برای اجرای دستور در حالت کاربری صرف کرده است.

  2. System time: زمانی که CPU در حالت کرنل صرف کرده است.

  3. CPU usage: درصد استفاده از CPU توسط دستور.

تفاوت User و System در دسترسی به منابع سیستم است:

  • حالت کاربری: دستورات مستقیم به سخت‌افزار دسترسی ندارند و از APIهای سیستم استفاده می‌کنند.

  • حالت کرنل: کد دسترسی کامل به سخت‌افزار و منابع سیستم دارد. اگر در این حالت خطایی رخ دهد، ممکن است کل سیستم را تحت تأثیر قرار دهد.


جمع‌بندی

با استفاده از دستور time می‌توانید به راحتی زمان اجرای دستورات و اسکریپت‌ها را بدون نوشتن هیچ کد اضافی بسنجید. این دستور به شما اطلاعات دقیقی از زمان مصرف‌شده در حالت کاربری، کرنل و میزان استفاده CPU ارائه می‌دهد و ابزار بسیار مفیدی برای بهینه‌سازی و بررسی عملکرد برنامه‌ها در لینوکس است.