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

 

 

HTOP چیست؟

Htop یک مانیتور سیستم تعاملی، نمایشگر فرآیند و مدیر فرآیند است که برای سیستم‌های یونیکسی طراحی شده است. این برنامه که در اصل به عنوان جایگزینی برای دستور top یونیکس طراحی شده بود، نه تنها بسیاری از عملکردهای دستور top را ارائه می‌دهد؛ بلکه انعطاف پذیری بسیار بیشتری را نیز در مورد نحوه مشاهده فرآیندهای سیستم داراست.

برخلاف دستور top، دستور htop لیست کاملی از فرآیندهای در حال اجرا را به جای فرآیندهای پرمصرف منابع ارائه می‌دهد. Htop می‌تواند فرآیندها را به صورت درختی نمایش دهد و از رنگ‌های مختلف نیز در نمایش آمار مصرف منابع استفاده می‌کند.
Htop سه نقش اصلی را ایفا می‌کند:

  • نظارت بر سیستم
  • مشاهده فرآیند
  • مدیریت فرآیند

 

نحوه استفاده از HTOP

اول از همه باید htop را روی سیستم خود نصب نمایید. در اینجا نحوه انجام این کار آمده است:

در لینوکس:

sudo apt-get install htop

در لینوکس (Fedora):

sudo dnf install htop

در لینوکس (CentOS):

sudo yum install epel-release
sudo yum install htop

در Mac OS:

brew install htop

پس از نصب، اکنون دستور htop را اجرا کنید.

htop

رابط htop در خروجی دستور، مشابه زیر خواهد بود:

 

هر فیلد در خروجی بالا در ادامه شرح داده شده است.

 

Uptime

این پارامتر نشان می‌دهد که سیستم چه مدت در حال اجرا بوده است. همین اطلاعات را می‌توان با اجرای دستور uptime مشاهده کرد. این دستور اطلاعات را از فایل /proc/uptime می‌خواند.

 

Load Average

علاوه بر uptime، سه پارامتر دیگر نیز وجود دارد که نشان دهنده میانگین بار است. آن‌ها از فایل /proc/loadavg گرفته شده‌اند. اگر نگاه دیگری به خروجی strace بیندازید، می‌بینید که این فایل نیز باز شده است.

 

PID (شناسه فرآیند)

هر بار که یک فرآیند جدید راه‌اندازی می‌شود، یک شماره شناسایی (ID) به آن اختصاص می‌یابد که شناسه فرآیند (process ID) یا به اختصار PID نامیده می‌شود.

اگر برنامه‌ای را در پس زمینه (&) از bash اجرا کنید، شماره آن job (در براکت) و PID را خواهید دید.

 

Process Tree

هنگامی‌که یک فرآیند جدید را راه‌اندازی می‌نمایید، فرآیندی که فرآیند جدید را فعال می‌کند، فرآیند والد نام دارد. فرآیند جدید اکنون یک فرآیند فرزند برای آن فرآیند والد است. این روابط یک ساختار درختی را تشکیل می‌دهند. اگر F5 را در htop بزنید، می‌توانید سلسله مراتب فرآیند را ببینید. همچنین می‌توانید از گزینه f با ps یا pstree استفاده کنید.

 

Process User

هر فرآیند متعلق به یک کاربر است. کاربران با یک شناسه عددی نشان داده می‌شوند. از دستور id می‌توان برای پیدا کردن نام کاربر استفاده کرد. این دستور، اطلاعات را از فایل‌های /etc/passwd و /etc/group دریافت می‌کند.

 

وضعیت فرآیند (S)

"S" در htop مخفف وضعیت فرآیند (Process State) است. مقدار این خروجی، یکی از موارد زیر خواهد بود:

R: این فرآیند در حال حاضر در حال اجرا است یا در انتظار اجراست.

S: فرآیند در خواب موقت (intereuptible sleep) است (در انتظار رخ دادن یک رویداد یا شرایط).

D: فرآیند در خواب دائمی (unintereuptible sleep) است (از حالت خواب بیرون نمی آید).

Z: این فرآیند، یک فرآیند منحل شده است (با نام مستعار "zombie"). به عبارت دیگر، فسخ شده است و توسط والدینش تکرار نمی‌شود.

T: این فرآیند با سیگنال کنترل job متوقف می‌شود.

t: فرآیند در طول ردیابی توسط دیباگر متوقف شده است.

X: فرآیند مرده است. احتمالا هرگز این مورد را نخواهید دید.

 

این مطلب نیز ممکن است برای شما مفید باشد: بستن ترمینال بدون قطع فرآیندهای در حال اجرا در لینوکس

 

Process Time

لینوکس یک سیستم عامل چندوظیفه‌ای است. به این معنی که حتی وقتی یک CPU دارید، شما می‌توانید چندین فرآیند را همزمان اجرا نمایید. شما می‌توانید از طریق SSH به سرور خود متصل شده و در حالی که وب سرور شما محتوای وبلاگ شما را از طریق اینترنت به خوانندگان شما ارائه می‌دهد، به خروجی htop نگاه کنید.

ممکن است این سؤال به ذهن شما بیاید که این چگونه ممکن است در حالیکه که یک CPU تنها می‌تواند یک دستور را در یک زمان اجرا کند؟ پاسخ، به اشتراک گذاری زمان است. یک فرآیند برای مدتی اجرا می‌شود، سپس به حالت تعلیق در می‌آید، در حالی که سایر پردازش‌ها برای مدتی منتظر می‌مانند تا به نوبت اجرا شوند. این بیت زمانی که یک فرآیند در آن اجرا می‌شود، برش زمانی نامیده می‌شود.

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

این توضیح می‌دهد که چرا میانگین بار، میانگین تعداد فرآیندهای در حال اجرا است. اگر فقط یک هسته دارید و میانگین بار 1.0 است، CPU حتما 100٪ استفاده شده است. اگر میانگین بار بالاتر از 1.0 باشد، به این معنی است که تعداد فرآیندهایی که می‌خواهند اجرا شوند، بیشتر از آن است که CPU بتواند اجرا کند؛ بنابراین ممکن است با کندی یا تاخیر مواجه شوید. اگر بار کمتر از 1.0 باشد، به این معنی است که CPU گاهی اوقات بیکار است و کاری انجام نمی‌دهد.

بدین صورت است که گاهی اوقات، زمان اجرای فرآیندی که به مدت 10 ثانیه در حال اجرا است؛ بیشتر یا کمتر از دقیقاً 10 ثانیه است.

 

Process Niceness و Process Priority

وقتی taskهای بیشتری برای اجرا نسبت به تعداد هسته‌های CPU موجود دارید، باید تصمیم بگیرید که کدام موارد در مرحله بعدی اجرا شوند و کدام موارد منتظر بمانند. این همان چیزی است که زمان‌بند تسک (task scheduler) مسئول آن است.
زمان‌بند در هسته لینوکس مسئول انتخاب فرآیند بعدی موجود در صف اجراست و این بستگی به الگوریتم زمان‌بندی مورد استفاده در هسته دارد.

به طور کلی شما نمی‌توانید بر زمان‌بندی تسک‌ها تأثیر بگذارید؛ اما می‌توانید به scheduler اطلاع دهید که کدام فرآیندها برای شما مهم‌تر هستند و زمان‌بند ممکن است آن را در نظر بگیرد.

Niceness یا به اختصار (NI)، یک اولویت فضای کاربر برای فرآیندها است؛ از اولویت 20- که بالاترین اولویت است تا 19 که کمترین اولویت است. Niceness پیش فرض فرآیندها مقدار صفر است.

 

Memory Usage

هر فرآیند این تصور را دارد که تنها او در حافظه است. این کار با استفاده از حافظه مجازی انجام می‌شود.

فرآیندها دسترسی مستقیم به حافظه فیزیکی ندارند. در عوض، فضای آدرس مجازی خود را دارند و هسته، آدرس‌های حافظه مجازی را به حافظه فیزیکی ترجمه می‌کند یا می‌تواند برخی از آن را به دیسک نگاشت نماید. به همین دلیل است که به نظر می‌رسد فرآیندها از حافظه‌ای که شما روی رایانه خود قرار داده‌اید، بیشتر استفاده می‌کنند.

معنی رنگ‌های نمایش داده شده در مصرف حافظه در ادامه آمده است:

  • سبز: حافظه استفاده شده
  • آبی: بافر
  • نارنجی: کش (cache)

 

گزینه‌ها

-d –delay: برای نشان دادن تأخیر بین به‌روزرسانی‌ها، در دهم ثانیه استفاده می‌شود.

-C –no-color –no-colour: دستور htop را در حالت monochrome راه‌اندازی می‌کند.

-h –help: برای نمایش پیام راهنما استفاده می‌شود.

-u –user=USERNAME: برای نمایش فرآیندهای یک کاربر خاص استفاده می‌شود.

-p –pid=PID, PID…: برای نمایش PIDهای خاص استفاده می‌شود.

-s –sort-key COLUMN: بر اساس یک ستون مرتب می‌شود (برای لیست ستونی از راهنمای –sort-key استفاده کنید).

-v –version: اطلاعات نسخه را نمایش می‌دهد.

 

دستورات تعاملی

Arrows, Page Up, Page Down, Home, End: لیست فرآیندها را اسکرول می‌کند.

Space: یک فرآیند را تگ می‌زند یا برچسب گذاری می‌نماید.

U: برچسب تمام فرآیندها را حذف می‌کند (همه تگ‌های اضافه شده با کلید Space را حذف می‌نماید).

s: فراخوان‌های سیستمی فرآیند را ردیابی می‌کند.

F1: راهنما را نشان می‌دهد.

F2: راه‌اندازی می‌نماید.

F3: جستجو را فعال می‌کند.

F4: فیلتر می‌نماید (بخشی از خط فرمان فرآیند را تایپ کنید تا فقط فرآیندهایی که نام آن‌ها مطابقت دارد، نشان داده شود).

F5: نمای درختی را نشان می‌دهد.

 

 

 

منبع:

monovm