Future ForgeFuture ForgeFuture ForgeFuture Forge
ServicesWorkPackagesFree toolsNotesAboutContact
Start
  1. Home
  2. /Notes
Future ForgeFuture Forge

Product engineering studio — design, build, and deploy software.

Discuss your project

Contact

hello@futureforge.ir09128464105
Future ForgeFuture Forge

Product engineering studio — design, build, and deploy software.

Services

Product engineeringFull-stack engineeringEngineering auditArchitecture consultingInfrastructure and deploymentAI in the product

Explore

WorkNotesFAQPackages

Free tools

Engineering auditArchitecture advisorProject estimatorPrompt tool

Company

AboutContactPrivacyTerms of use

Discuss your project

Describe the problem and the constraints. If there is a fit, we will schedule a conversation.

Discuss your project

Contact

hello@futureforge.ir09128464105
GitHubLinkedIn

© 2026 FutureForge. All rights reserved.

HomeServicesFree toolsStart
Operations

ps و top و htop: دیدن و پایش فرایندها در لینوکس

تفاوت ps، top و htop برای دیدن CPU، حافظه و درخت فرایند؛ فرمان‌های واقعی و اشتباه‌های رایج پایش در سرور لینوکس.

SE
Soheil Ebrahimpour

Founder & product engineer

·Sep 20, 2026·7 min read
ps top htop لینوکسprocess monitoringps auxtophtopCPU usagememory usagePID
htop روی لپ‌تاپ با استیکی ps top htop

وقتی سرور کند می‌شود، دیسک پر نیست و شبکه هم سالم به نظر می‌رسد، اولین سؤال عملی این است: کدام فرایند CPU یا حافظه را گرفته؟ بدون دیدن فهرست فرایندها (process) فقط حدس می‌زنید. سه ابزار کلاسیک این کار را انجام می‌دهند: ps برای عکس لحظه‌ای، top برای نمای زندهٔ متنی، و htop برای نمای تعاملی‌تر روی ترمینال.

این مقاله ادامهٔ مستقیم مفهوم فرایند در لینوکس است. فرض می‌کنیم می‌دانید PID چیست و چرا هر برنامهٔ در حال اجرا حداقل یک فرایند دارد؛ اینجا تمرکز روی خواندن خروجی ابزارها، انتخاب ستون‌های مفید، و دانستن محدودیت هر ابزار است — نه حفظ کردن همهٔ پرچم‌ها.

مقایسه سه‌ستونه ps top htop روی وایت‌برد

پاسخ کوتاه

از ps وقتی می‌خواهید یک عکس از وضعیت فعلی بگیرید یا خروجی را به لوله و اسکریپت بدهید. از top وقتی روی SSH هستید و می‌خواهید بدون نصب بستهٔ اضافه، مصرف لحظه‌ای CPU و حافظه را ببینید. از htop وقتی ترمینال اجازه می‌دهد و می‌خواهید با کیبورد فرایند را فیلتر، مرتب، یا (با احتیاط) بکشید. هیچ‌کدام جایگزین مانیتورینگ بلندمدت (متریک و هشدار) نیستند؛ ابزار تشخیص در لحظهٔ حادثه‌اند.

ps برای برش لحظه‌ای، top/htop برای نبض زنده — و هر سه بدون زمینهٔ «چه چیزی نرمال است برای این سرویس» فقط نویز تولید می‌کنند.

چرا سه ابزار مختلف؟

هر سه در نهایت از اطلاعات هسته دربارهٔ فرایندها می‌خوانند (در لینوکس معمولاً از طریق فایل‌سیستم /proc). تفاوت در رابط و الگوی استفاده است:

  • ps: یک بار اجرا می‌شود، خروجی ثابت می‌دهد، برای grep و اسکریپت عالی است.
  • top: صفحه را تازه می‌کند؛ مناسب جلسهٔ عیب‌یابی زنده روی سرور مینیمال.
  • htop: رابط رنگی، درخت فرایند، جستجو و فیلتر راحت‌تر؛ اغلب باید جدا نصب شود.

اگر فقط یک فرمان حفظ کنید: ابتدا `ps` برای یافتن PID مشکوک، سپس در صورت نیاز `top` یا `htop` برای دیدن روند مصرف در چند ثانیه.

ps: عکس لحظه‌ای

ps مخفف process status است. شکل‌های زیادی دارد چون سنت BSD و System V را همزمان پوشش می‌دهد. برای کار روزمرهٔ سرور، ترکیب‌های زیر کافی‌اند.

فهرست کامل با جزئیات رایج

bash

ps aux

خروجی معمولاً شامل USER، PID، %CPU، %MEM، VSZ، RSS، TTY، STAT، START، TIME و COMMAND است. USER مالک فرایند است؛ PID شناسه؛ %CPU و %MEM سهم تقریبی از منابع؛ RSS حافظهٔ مقیم تقریبی؛ STAT وضعیت کوتاه (مثلاً R در حال اجرا، S خواب وقفه، Z زامبی، D خواب غیرقابل‌وقفه).

درخت فرایند

bash

ps auxf

پرچم f درخت والد–فرزند را نشان می‌دهد. وقتی یک سرویس چند worker دارد یا اسکریپت فرزند spawn می‌کند، درخت سریع‌تر از لیست تخت می‌گوید کدام والد مقصر است.

فیلتر روی نام یا کاربر

bash

ps -u www-data -o pid,ppid,stat,%cpu,%mem,cmd ps -C nginx -o pid,stat,%cpu,%mem,args

گزینهٔ -o ستون‌ها را خودتان انتخاب می‌کنید تا نویز کم شود. برای اسکریپت‌ها، خروجی قابل‌پیش‌بینی مهم‌تر از زیبایی است.

یافتن PID برای یک الگو

bash

ps aux | grep '[n]ginx'

ترفند [n] باعث می‌شود خود خط grep در نتایج نیاید. جایگزین تمیزتر در بسیاری سیستم‌ها `pgrep -a nginx` است.

bash

pgrep -a nginx pgrep -u deploy -l

top: نبض زنده بدون وابستگی اضافه

با اجرای `top` صفحه‌ای می‌بینید که هر چند ثانیه تازه می‌شود: خلاصهٔ load average، تعداد فرایندها، و جدول مرتب‌شده (پیش‌فرض اغلب بر اساس CPU).

bash

top

کلیدهای مفید در جلسهٔ top (بدون Enter اضافی برای بیشتر آن‌ها):

  • P: مرتب‌سازی بر اساس CPU
  • M: مرتب‌سازی بر اساس حافظه
  • k: ارسال سیگنال به PID (معادل محتاطانهٔ kill؛ فقط اگر مطمئنید)
  • 1: نمایش CPU به‌ازای هر هسته
  • q: خروج

bash

top -p 1234,5678 top -u postgres

محدود کردن به PID یا کاربر، نویز را کم می‌کند وقتی روی ماشین شلوغ عیب‌یابی می‌کنید. گزینهٔ -b برای حالت دسته‌ای (batch) خروجی را یک‌بار چاپ می‌کند و برای لاگ‌برداری کوتاه مفید است:

bash

top -b -n 1 | head -n 20

htop: وقتی ترمینال اجازه می‌دهد

htop جایگزین تعاملی‌تر top است: نوارهای رنگی CPU/حافظه/swap، پیمایش با کلیدهای جهت، فیلتر با F4، درخت با F5، و جستجو. روی بسیاری از ابرتصویرها پیش‌فرض نیست:

bash

sudo apt update && sudo apt install -y htop # Debian/Ubuntu sudo dnf install -y htop # Fedora/RHEL-like

bash

htop

htop برای جلسهٔ دستی عالی است؛ برای اتوماسیون و CI معمولاً ps یا خواندن مستقیم /proc مناسب‌تر است چون خروجی پایدار و بدون TUI می‌خواهید.

جدول تصمیم سریع

نیازابزارچرا
یافتن PID برای اسکریپت/لولهps / pgrepخروجی یک‌بار، قابل پارس
دیدن جهش CPU در ۳۰ ثانیهtop یا htopتازه‌سازی زنده
درخت سرویس چندفرزندیps auxf یا htop (درخت)رابطهٔ والد–فرزند
سرور بدون بستهٔ اضافهps + topمعمولاً از قبل هست
مانیتورینگ هفته‌ای با هشدارنه این سهمتریک/Prometheus/مشابه

خواندن درست اعداد

%CPU در ps اغلب میانگین از شروع فرایند است؛ در top/htop معمولاً بازهٔ نمونه‌برداری جاری را نشان می‌دهد. پس فرایندی که یک‌بار spike داشته در ps ممکن است هنوز %CPU بالا نشان دهد یا برعکس. RSS حافظهٔ فیزیکی تقریبی است و جمع RSS همهٔ فرایندها به‌خاطر صفحات مشترک می‌تواند گمراه‌کننده باشد.

Load average در سربرگ top میانگین طول صف اجراست، نه «درصد CPU». روی ماشین ۸ هسته‌ای load حدود ۸ یعنی صف پر؛ تفسیر دقیق‌تر در مقالهٔ جداگانهٔ load average می‌آید.

گردش کار عیب‌یابی پیشنهادی

  1. ps aux --sort=-%cpu | head و همین برای %mem تا نامزدها را ببینید.
  2. اگر نامزد پایدار نیست، top یا htop را ۳۰–۶۰ ثانیه باز بگذارید.
  3. با درخت (ps auxf) ببینید آیا worker فرزند یک سرویس اصلی است.
  4. قبل از kill، بفهمید فرایند مال کدام واحد systemd یا کاربر است.
  5. اگر الگو تکراری است، متریک بلندمدت و سقف منابع (cgroup/limit) را بررسی کنید — نه فقط کشتن لحظه‌ای.

bash

ps aux --sort=-%cpu | head -n 15 ps aux --sort=-%mem | head -n 15

اشتباه‌های رایج

  • کشتن اولین PID با %CPU بالا بدون فهمیدن اینکه GC، بکاپ یا migrate عمدی است.
  • اتکا به یک نمونهٔ ps در لحظهٔ اوج کوتاه ترافیک.
  • جمع کردن %MEM همهٔ سطرها و نتیجه‌گیری «حافظه ۲۰۰٪ شده».
  • نصب htop روی production فقط برای یک بار دیدن؛ درحالی‌که top کافی بود.
  • فراموش کردن اینکه بدون دسترسی، فقط فرایندهای خودتان را می‌بینید.

چه زمانی کافی نیست؟

اگر هر روز یک نفر SSH می‌زند و top را نگاه می‌کند تا بفهمد سایت کند است، ابزار را اشتباه انتخاب کرده‌اید. ps/top/htop برای تشخیص تعاملی‌اند. برای روند، ظرفیت‌سنجی و هشدار به مانیتورینگ ساختاریافته نیاز دارید. همچنین برای دیدن اینکه کدام سوکت یا پورت به کدام PID وصل است، ابزارهایی مثل ss وارد می‌شوند — در مقالات پورت و شبکه.

خلاصه

ps برای برش و اسکریپت، top برای نبض روی سرور مینیمال، htop برای کار تعاملی راحت‌تر. اعداد را در بافت نمونه‌برداری و حافظهٔ مشترک بخوانید، درخت را برای سرویس‌های چندفرایندی جدی بگیرید، و قبل از ارسال سیگنال بدانید چه چیزی را می‌کشید. قدم بعدی منطقی: مقالهٔ کشتن امن فرایندها و سپس systemd برای فهم مالک بلندمدت همان PID.

سوالات متداول

آیا htop همیشه بهتر از top است؟

برای انسان پشت ترمینال اغلب بله؛ برای سرور قفل‌شده، اسکریپت، یا محیطی که اجازهٔ نصب ندارد، top و ps کافی و گاهی تنها گزینهٔ معقول‌اند.

چرا PID در ps هست ولی در top نیست؟

معمولاً فرایند خیلی کوتاه‌عمر بوده، فیلتر کاربر/PID فعال است، یا تازه‌سازی top هنوز آن را در بازه نشان نداده. دوباره ps بگیرید.

VSZ و RSS چه فرقی دارند؟

VSZ فضای آدرس مجازی را نشان می‌دهد؛ RSS تقریبی از صفحات مقیم در RAM است. برای فشار حافظهٔ واقعی، RSS (با احتیاط اشتراک) مفیدتر از VSZ است.

منابع و مراجع

  • ps(1) — procps-ng manual: https://man7.org/linux/man-pages/man1/ps.1.html
  • top(1) — procps-ng manual: https://man7.org/linux/man-pages/man1/top.1.html
  • htop — project documentation: https://htop.dev/
  • proc(5) — /proc filesystem: https://man7.org/linux/man-pages/man5/proc.5.html

Author

SE

Soheil Ebrahimpour is the founder of FutureForge. He works on product design, architecture, and getting custom software into production.

Related notes

Related notes

Categories

Related services

From note to project

If this topic is close to your product or system, we can talk about the real scope.

If you are unsure about architecture or the build path, we can talk about the project.

Describe the problem and the constraints. If there is a fit, we will schedule a conversation.

Soheil Ebrahimpour
Notes
چگونه فرایندها را در لینوکس متوقف یا بکشیم؟
فرایند در لینوکس چیست؟ PID، والد و چرخهٔ حیات
Logging چیست؟ ثبت رویداد برای تشخیص و پاسخ به حادثه
تعیین اندازهٔ سرور: RAM، CPU و Storage بر اساس Workload
Docker در برابر Kubernetes؛ مقایسهٔ دقیق نه شعار

Operations

چگونه فرایندها را در لینوکس متوقف یا بکشیم؟

Sep 20, 2026

Operations

فرایند در لینوکس چیست؟ PID، والد و چرخهٔ حیات

Sep 20, 2026

Operations

Logging چیست؟ ثبت رویداد برای تشخیص و پاسخ به حادثه

Sep 20, 2026

Operations

تعیین اندازهٔ سرور: RAM، CPU و Storage بر اساس Workload

Sep 20, 2026

Operations

Docker در برابر Kubernetes؛ مقایسهٔ دقیق نه شعار

Sep 20, 2026
All notes219
Software architecture13
Glossary37
Operations87
Product engineering74
Web guide8
Product engineering
Full-stack engineering
Engineering audit
Architecture consulting
Infrastructure and deployment
Discuss your project
Free tools
Discuss your project