دانشنامه مارال هاست دانشنامه مارال هاست
  • صفحه اصلی
  • مقالات
    • هاست اشتراکی
    • دامنه
    • سرور مجازی
    • کنترل پنل سی‌پنل
    • کنترل پنل پلسک
    • کنترل پنل دایرکت ادمین
    • ایمیل
    • CloudLinux
    • Cloudflare
  • تماس با ما
دانشنامه مارال هاست دانشنامه مارال هاست
دانشنامه مارال هاست دانشنامه مارال هاست
  • صفحه اصلی
  • مقالات
    • هاست اشتراکی
    • دامنه
    • سرور مجازی
    • کنترل پنل سی‌پنل
    • کنترل پنل پلسک
    • کنترل پنل دایرکت ادمین
    • ایمیل
    • CloudLinux
    • Cloudflare
  • تماس با ما
لینوکس
  • Folder icon closed Folder open iconآشنایی با لینوکس (Linux Fundamentals)
  • Folder icon closed Folder open iconتوزیع‌های مختلف لینوکس (Linux Distributions)
  • Folder icon closed Folder open iconFHS؛ آشنایی با ساختار فایل‌ و پوشه‌های لینوکسی
  • Folder icon closed Folder open iconمهم‌ترین دستورات پایه‌ای برای هر sysadmin
  • Folder icon closed Folder open iconمدیریت فایل و پوشه (file & directory management) در لینوکس
  • Folder icon closed Folder open iconآموزش ویرایش فایل‌های متنی در لینوکس با Nano و Vim
  • Folder icon closed Folder open iconآشنایی با users، groups و ساختار مدیریت کاربران در لینوکس
  • Folder icon closed Folder open iconآموزش Permission و Ownership در لینوکس
  • Folder icon closed Folder open iconآشنایی با Root و sudo
  • Folder icon closed Folder open iconآشنایی با Processها در لینوکس
  • Folder icon closed Folder open iconتغییر Hostname در لینوکس
  • Folder icon closed Folder open iconتنظیم Timezone در لینوکس
  • Folder icon closed Folder open iconتنظیم NTP در لینوکس
  • Folder icon closed Folder open iconبروزرسانی سیستم در لینوکس
  • Folder icon closed Folder open iconساخت کاربر جدید در لینوکس
  • Folder icon closed Folder open iconایجاد کاربران و گروه ها در لینوکس
  • Folder icon closed Folder open iconآموزش ACL در لینوکس؛ مدیریت سطح دسترسی پیشرفته برای کاربران و گروه‌ها
  • Folder icon closed Folder open iconآموزش umask در لینوکس؛ تعیین مجوز پیش‌فرض فایل‌ها و پوشه‌های جدید
  • Folder icon closed Folder open iconآموزش فایل sudoers؛ مدیریت دسترسی کاربران به دستورات مدیریتی در لینوکس
  • Folder icon closed Folder open iconآموزش دستور chown در لینوکس
  • Folder icon closed Folder open iconآموزش دستور chmod در لینوکس
  • Folder icon closed Folder open iconSticky Bit در لینوکس چیست؟ آموزش افزایش امنیت پوشه‌های اشتراکی
  • Folder icon closed Folder open iconآموزش SUID در لینوکس؛ اجرای برنامه‌ها با دسترسی مالک فایل
  • Folder icon closed Folder open iconآموزش SGID در لینوکس؛ مدیریت دسترسی گروه‌ها و اجرای برنامه‌ها
  • Folder icon closed Folder open iconآموزش ریست پسورد ubuntu
  • Folder icon closed Folder open iconآموزش ریست پسورد Debian
  • Folder icon closed Folder open iconاگر منابع سرور لینوکسی کامل درگیر شد چکار کنیم ؟
  • Folder icon closed Folder open iconآموزش تست استرس سرور لینوکس
  • Folder icon closed Folder open iconآموزش کامل systemctl
  • Folder icon closed Folder open iconساخت سرویس سفارشی در Systemd
  • Folder icon closed Folder open iconآموزش کامل cron
  • Folder icon closed Folder open iconآموزش کامل OpenSSL در لینوکس
  • Folder icon closed Folder open iconآموزش کامل htop در لینوکس
  • Folder icon closed Folder open iconآموزش کامل دستور kill در لینوکس
  • Folder icon closed Folder open iconآموزش کامل دستور df در لینوکس
  • Folder icon closed Folder open iconآموزش کامل دستور du در لینوکس
  • Folder icon closed Folder open iconآموزش کامل دستور lsblk در لینوکس
  • Folder icon closed Folder open iconآموزش کامل journalctl در لینوکس
  • Folder icon closed Folder open iconپیدا کردن فایل‌های حجیم در لینوکس
  • Folder icon closed Folder open iconپیدا کردن فایل‌های حجیم در لینوکس
  • Folder icon closed Folder open iconپیدا کردن پردازش‌های مصرف‌کننده CPU
  • Folder icon closed Folder open iconTerminal Multiplexer چیست؟ آشنایی با Screen، tmux و ابزارهای مشابه
    • آموزش Screen در لینوکس؛ مدیریت Sessionها و پردازش‌های طولانی
    • آموزش tmux در لینوکس؛ مدیریت Session، Window و Pane
    • اجرای پردازش‌های طولانی پس از قطع SSH با Screen و tmux
    • شخصی‌سازی Screen با فایل .screenrc
    • شخصی‌سازی tmux با فایل .tmux.conf
    • مقایسه Screen و tmux؛ کدام Terminal Multiplexer مناسب‌تر است؟
    • تفاوت nohup، Screen، tmux و systemd؛ کدام روش برای اجرای پردازش‌ها مناسب است؟
  • Folder icon closed Folder open iconتست SMTP در لینوکس به سمت مقصد
  • Folder icon closed Folder open iconآموزش بررسی وضعیت ارسال ایمیل در Track Delivery
  • Folder icon closed Folder open iconآموزش انتقال خودکار ایمیل‌ها به یک پوشه(mailenable , roundcube)
  • Folder icon closed Folder open iconآموزش مسدود کردن یک فرستنده در Webmail (Roundcube و MailEnable)
  • Folder icon closed Folder open iconآموزش تعریف Email Filter در cPanel
  • Folder icon closed Folder open iconآموزش بررسی فایل‌های لاگ در /var/log لینوکس
  • Folder icon closed Folder open iconآموزش grep برای جستجوی خطا در لاگ‌های لینوکس
  • Folder icon closed Folder open iconjournalctl -b؛ بررسی خطاهای Boot در لینوکس
  • Folder icon closed Folder open iconlogrotate؛ مدیریت و چرخش لاگ‌ها در لینوکس
  • Folder icon closed Folder open iconآموزش ریست پسورد centos 7
  • Folder icon closed Folder open iconآموزش ریست پسورد فراموش‌شده root در AlmaLinux 8.7 و AlmaLinux 9.1
  • Folder icon closed Folder open iconچرا در سرور لینوکس فضای دیسک آزاد نمی‌شود؟ آموزش کامل عیب‌یابی فضای Disk
لینوکس

پیدا کردن پردازش‌های مصرف‌کننده CPU

پیدا کردن پردازش‌های مصرف‌کننده CPU

مقدمه

یکی از مشکلات رایج در مدیریت سرورهای لینوکسی، مصرف غیرعادی CPU توسط یک یا چند Process است. زمانی که یک پردازش CPU زیادی مصرف می‌کند، ممکن است باعث افزایش Load، کاهش سرعت سرویس‌ها، افزایش زمان پاسخ‌گویی و در برخی موارد اختلال در سرویس‌های حیاتی سرور شود.

در سیستم‌عامل‌های CentOS، AlmaLinux و Ubuntu ابزارهای مختلفی برای بررسی وضعیت CPU و شناسایی Processهای پرمصرف وجود دارد. ابزارهایی مانند top، htop، ps، pidstat و uptime به مدیر سیستم کمک می‌کنند تا علت افزایش مصرف CPU را پیدا کند.

در این مقاله، روش‌های مختلف پیدا کردن Processهای مصرف‌کننده CPU در لینوکس را همراه با مثال‌های کاربردی بررسی می‌کنیم.


پیش‌نیازها

  • دسترسی SSH به سرور لینوکس
  • دسترسی به Terminal
  • دسترسی Root یا sudo
  • آشنایی اولیه با دستورات Linux

بررسی Load و CPU سرور

قبل از بررسی Processها، بهتر است وضعیت کلی سیستم را مشاهده کنیم.

دستور:

uptime

نمونه خروجی:

08:30:15 up 15 days, 4:21, 2 users, load average: 4.20, 3.80, 2.50

سه عدد انتهایی نشان‌دهنده Load Average در بازه‌های:

1 دقیقه
5 دقیقه
15 دقیقه

هستند.


بررسی تعداد CPUهای سرور

برای مشاهده تعداد CPUهای منطقی:

nproc

مثلاً:

8

یعنی سیستم دارای 8 CPU منطقی است.

همچنین می‌توانید اطلاعات کامل CPU را مشاهده کنید:

lscpu

بررسی مصرف CPU با top

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

top

است.

پس از اجرای دستور، صفحه‌ای مشابه زیر مشاهده می‌کنید:

PID   USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM   TIME+  COMMAND
1250  mysql     20   0    8.2g   2.1g  12000 S  185.3  27.5  20:15  mysqld
2410  root      20   0    500m    80m   10m R   75.2   1.0   5:12   python

مهم‌ترین ستون:

%CPU

است.

این ستون مشخص می‌کند هر Process چه میزان CPU مصرف می‌کند.


مرتب‌سازی Processها بر اساس CPU

در محیط top کلید:

P

را فشار دهید.

Processها بر اساس مصرف CPU مرتب می‌شوند.

به این ترتیب، Processهای پرمصرف در بالای لیست قرار می‌گیرند.


مشاهده Processهای مصرف‌کننده CPU با ps

برای مشاهده Processهای پرمصرف:

ps aux --sort=-%cpu

نمونه خروجی:

USER       PID  %CPU  %MEM COMMAND
mysql     1250  185.3 27.5 /usr/sbin/mysqld
root      2410   75.2  1.0 python app.py
www-data  3100   42.1  2.5 nginx

برای نمایش 10 Process اول:

ps aux --sort=-%cpu | head -11

پیدا کردن Processهای پرمصرف با PID

گاهی فقط PID Process را می‌دانیم.

مثلاً:

PID = 1250

برای مشاهده اطلاعات:

ps -p 1250 -o pid,ppid,user,%cpu,%mem,etime,cmd

نمونه:

PID   PPID USER   %CPU %MEM ELAPSED CMD
1250  1    mysql  185  27.5 02:15:10 /usr/sbin/mysqld

استفاده از htop

ابزار htop نسخه Interactive و کاربردی‌تر top است.


نصب در Ubuntu و Debian

sudo apt update
sudo apt install -y htop

نصب در AlmaLinux و Rocky Linux

sudo dnf install -y htop

نصب در CentOS 7

در CentOS 7 ممکن است نیاز باشد ابتدا Repository مناسب فعال شود:

yum install -y epel-release
yum install -y htop

اجرای ابزار:

htop

در htop می‌توانید:

  • Processهای پرمصرف را مشاهده کنید.
  • Processها را مرتب کنید.
  • Processها را جستجو کنید.
  • Process را Kill کنید.
  • Processها را بر اساس CPU یا Memory مرتب کنید.

مرتب‌سازی CPU در htop

پس از اجرای:

htop

می‌توانید با استفاده از کلید:

F6

ستون مرتب‌سازی را انتخاب کنید.

برای بررسی مصرف CPU:

PERCENT_CPU

را انتخاب کنید.


پیدا کردن Processهای پرمصرف با pidstat

ابزار pidstat بخشی از بسته sysstat است.


Ubuntu / Debian

sudo apt install -y sysstat

AlmaLinux / Rocky Linux / CentOS

sudo dnf install -y sysstat

در CentOS 7:

sudo yum install -y sysstat

اجرای:

pidstat

برای مشاهده CPU:

pidstat -u 1

عدد:

1

یعنی اطلاعات هر یک ثانیه نمایش داده شود.


نمایش Processهای CPU-intensive

pidstat -u 1 10

یعنی:

  • هر 1 ثانیه اطلاعات را بررسی کن.
  • این کار را 10 بار انجام بده.

بررسی مصرف CPU یک Process مشخص

مثلاً:

pidstat -p 1250 1

این دستور مصرف CPU مربوط به PID 1250 را بررسی می‌کند.


بررسی Processهای یک User خاص

مثلاً:

ps -u www-data --sort=-%cpu

یا:

ps -u mysql --sort=-%cpu

این روش در سرورهای Hosting برای پیدا کردن Processهای مربوط به یک User بسیار کاربردی است.


پیدا کردن Processهای پرمصرف در سرورهای Hosting

در سرورهایی که cPanel، DirectAdmin یا سایر کنترل‌پنل‌ها نصب هستند، ممکن است یک Website باعث مصرف CPU شود.

برای شروع:

ps aux --sort=-%cpu | head -20

سپس User مربوط به Process را بررسی کنید.

مثلاً:

user1   1250  95.5  ...

می‌توان بررسی کرد این User چه Processهایی دارد:

ps -u user1 -f

بررسی Processهای Apache

برای پیدا کردن Processهای Apache:

ps aux | grep apache

یا:

ps aux | grep httpd

بسته به Distribution و نحوه نصب Web Server ممکن است نام Process متفاوت باشد.


بررسی Processهای Nginx

ps aux | grep nginx

بررسی Processهای PHP

در سرورهای PHP:

ps aux | grep php

برای PHP-FPM:

ps aux | grep php-fpm

اگر تعداد زیادی PHP Process در حال مصرف CPU باشند، باید Website، Script یا درخواست‌هایی که باعث ایجاد آن‌ها شده‌اند بررسی شوند.


بررسی MySQL و MariaDB

برای بررسی:

ps aux --sort=-%cpu | grep -E 'mysql|mariadb'

همچنین می‌توانید وضعیت Database را بررسی کنید:

mysqladmin processlist

یا داخل MySQL/MariaDB:

SHOW PROCESSLIST;

مصرف بالای CPU توسط Database می‌تواند ناشی از:

  • Queryهای سنگین
  • Index نامناسب
  • Queryهای طولانی
  • تعداد بالای Connection
  • افزایش Traffic
  • مشکلات Application

باشد.


بررسی CPU با vmstat

دستور:

vmstat 1

اطلاعات سیستم را هر یک ثانیه نمایش می‌دهد.

ستون‌های مهم:

us
sy
id
wa

معنی آن‌ها:

ستونتوضیح
usمصرف CPU توسط User Processes
syمصرف CPU توسط Kernel
idCPU Idle
waزمان انتظار برای I/O

تفاوت CPU User و System

اگر:

us

بالا باشد، معمولاً Application یا Processهای User Space CPU زیادی مصرف می‌کنند.

اگر:

sy

بالا باشد، ممکن است Kernel، Driver یا برخی عملیات سیستمی باعث مصرف CPU شده باشند.

اگر:

wa

بالا باشد، مشکل لزوماً CPU نیست و ممکن است سیستم در انتظار Disk I/O باشد.


بررسی وضعیت CPU با mpstat

ابزار:

mpstat

نیز از بسته sysstat ارائه می‌شود.

اجرا:

mpstat -P ALL 1

این دستور مصرف CPU هر Core را نمایش می‌دهد.

این موضوع زمانی مهم است که فقط یک Core درگیر باشد ولی سایر Coreها بیکار باشند.


بررسی Processهایی که یک Core را درگیر کرده‌اند

مثلاً در یک سرور 8 هسته‌ای ممکن است:

CPU0 = 100%
CPU1 = 10%
CPU2 = 5%
...

باشد.

در این شرایط ممکن است Application موردنظر از Multi-threading مناسب استفاده نکند.

برای بررسی:

mpstat -P ALL 1

پیدا کردن Processهای Zombie

Zombie Process معمولاً CPU مصرف نمی‌کند، اما وجود تعداد زیاد Zombie می‌تواند نشان‌دهنده مشکل Application باشد.

بررسی:

ps aux | awk '$8=="Z"'

یا:

ps -eo pid,ppid,state,cmd | grep '^.* Z '

مشاهده Process Tree

گاهی یک Process اصلی چندین Child Process ایجاد کرده است.

برای مشاهده ساختار:

pstree

یا:

pstree -p

مثلاً:

nginx
 ├─ nginx
 └─ nginx

این روش برای پیدا کردن ارتباط بین Parent و Child Processها مفید است.


پیدا کردن Parent Process

برای یک PID:

ps -p 1250 -o pid,ppid,cmd

مثلاً:

PID   PPID CMD
1250  1000 python app.py

در این مثال:

PPID = 1000

Parent Process است.


بررسی Processهای یک Service

برای مشاهده Processهای یک سرویس:

systemctl status nginx

یا:

systemctl status mysql

برای مشاهده PID:

systemctl show nginx --property=MainPID

بررسی CPU یک Service با systemd-cgtop

در سیستم‌هایی که systemd دارند:

systemd-cgtop

این ابزار مصرف منابع را بر اساس Control Group نمایش می‌دهد.

می‌توانید مصرف:

  • CPU
  • Memory
  • Tasks

را برای سرویس‌ها مشاهده کنید.


پیدا کردن Processی که CPU را 100 درصد مصرف می‌کند

سریع‌ترین روش:

top

سپس:

P

را فشار دهید.

یا:

ps aux --sort=-%cpu | head -11

بررسی یک Process در طول زمان

برای بررسی مداوم:

watch -n 1 'ps aux --sort=-%cpu | head -11'

هر یک ثانیه لیست Processها به‌روزرسانی می‌شود.


پیدا کردن Processهایی که اخیراً CPU زیادی مصرف کرده‌اند

برای بررسی لحظه‌ای، top یا pidstat مناسب‌تر از ps هستند؛ زیرا ps معمولاً یک Snapshot از وضعیت Process ارائه می‌دهد.

مثلاً:

pidstat -u 1

می‌تواند مشخص کند کدام Process در طول زمان CPU زیادی مصرف می‌کند.


اگر CPU ناگهان 100 درصد شد چه کنیم؟

ابتدا:

uptime

سپس:

top

Process پرمصرف را پیدا کنید.

بعد:

ps -p PID -o pid,ppid,user,%cpu,%mem,etime,cmd

اطلاعات دقیق Process را بررسی کنید.

سپس Parent Process را پیدا کنید:

ps -p PPID -o pid,ppid,user,%cpu,%mem,cmd

در نهایت مشخص کنید Process مربوط به کدام سرویس یا Application است.


متوقف کردن Process پرمصرف

اگر مطمئن هستید Process باید متوقف شود:

kill PID

اگر Process متوقف نشد:

kill -9 PID

استفاده از kill -9 باید آخرین گزینه باشد؛ زیرا Process فرصت انجام Cleanup معمول خود را ندارد.


Restart کردن سرویس به جای Kill کردن Process

اگر Process متعلق به یک Service است، بهتر است به‌جای Kill مستقیم Process، سرویس را مدیریت کنید.

مثلاً:

systemctl restart nginx

یا:

systemctl restart php-fpm

یا:

systemctl restart mysql

بررسی اینکه CPU واقعاً مشکل اصلی است

بالا بودن Load Average همیشه به معنی CPU بالا نیست.

بررسی:

top

و:

vmstat 1

اگر:

%CPU Idle

پایین باشد، CPU واقعاً تحت فشار است.

اما اگر:

wa

بالا باشد، باید Disk I/O را نیز بررسی کنید.


خطاهای رایج

top: command not found

در برخی سیستم‌های بسیار Minimal ممکن است ابزار نصب نباشد.

Ubuntu / Debian:

sudo apt install -y procps

AlmaLinux / Rocky Linux / CentOS:

sudo dnf install -y procps-ng

htop: command not found

نصب:

Ubuntu:

sudo apt install -y htop

AlmaLinux / Rocky Linux:

sudo dnf install -y htop

pidstat: command not found

نصب:

sudo apt install -y sysstat

یا:

sudo dnf install -y sysstat

بهترین روش‌ها

  • ابتدا با top یا htop وضعیت را بررسی کنید.
  • قبل از Kill کردن Process، مالک و Parent آن را مشخص کنید.
  • برای بررسی رفتار Process در طول زمان از pidstat استفاده کنید.
  • Load Average را در کنار CPU بررسی کنید.
  • مصرف CPU هر Core را با mpstat بررسی کنید.
  • در سرورهای Hosting، User مربوط به Process را شناسایی کنید.
  • برای سرویس‌های Production ترجیحاً Service را Restart کنید، نه اینکه Process را مستقیماً Kill کنید.
  • برای جلوگیری از تکرار مشکل، Monitoring و Alerting فعال کنید.

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

  • اجرای kill -9 بدون بررسی Process
  • تصور اینکه Load بالا همیشه به معنی CPU بالا است
  • نادیده گرفتن I/O Wait
  • بررسی نکردن Child Processها
  • Restart کردن سرویس بدون پیدا کردن علت اصلی
  • بررسی نکردن Queryهای سنگین Database
  • نادیده گرفتن Applicationهایی که مرتباً Process جدید ایجاد می‌کنند

چک‌لیست

پس از مطالعه این مقاله باید بتوانید:

  • مصرف CPU سرور را بررسی کنید.
  • Processهای پرمصرف را پیدا کنید.
  • Processها را بر اساس CPU مرتب کنید.
  • PID و Parent PID را شناسایی کنید.
  • Process Tree را بررسی کنید.
  • مصرف CPU هر Core را مشاهده کنید.
  • Processهای PHP، Nginx، Apache و Database را بررسی کنید.
  • با pidstat مصرف CPU را در طول زمان بررسی کنید.
  • Processهای مشکل‌دار را به‌صورت صحیح مدیریت کنید.
  • تفاوت CPU Usage و I/O Wait را تشخیص دهید.

مطالعات بیشتر

برای مطالعه مستندات رسمی:

  • Linux top manual
  • Linux ps manual
  • Linux pidstat documentation
  • Linux htop documentation

جمع‌بندی

برای پیدا کردن Processهای مصرف‌کننده CPU در لینوکس، ابزارهای مختلفی وجود دارد که هرکدام برای یک مرحله از عیب‌یابی مناسب هستند.

برای بررسی سریع:

top

برای نمایش Processهای پرمصرف:

ps aux --sort=-%cpu | head -11

برای بررسی مصرف CPU در طول زمان:

pidstat -u 1

برای مشاهده مصرف هر Core:

mpstat -P ALL 1

و برای بررسی تعاملی:

htop

استفاده ترکیبی از این ابزارها به مدیر سیستم کمک می‌کند ابتدا Process مشکل‌دار را شناسایی کرده، سپس علت مصرف بالای CPU را بررسی و در نهایت بدون ایجاد اختلال غیرضروری در سرویس‌های Production، مشکل را برطرف کند.

هنوز نیاز به کمک دارید؟

آیا سوالی دارید؟

آیا این مقاله برای شما مفید بود؟ بله خیر

نظرات خود را بنویسید... لغو پاسخ

اشتراک گذاری این مقاله

پیدا کردن پردازش‌های مصرف‌کننده CPU

کپی کردن لینک

Clipboard Icon

جدیدترین مقالات

آموزش نصب و راه‌اندازی RustDesk Server با Docker
آموزش نصب و راه‌اندازی RustDesk Server با Docker
2 minutes جولای 2, 2026
آموزش نصب و راه‌اندازی Matrix Synapse + Element Web + Coturn با Docker روی ...
4 minutes جولای 2, 2026
CXS چیست و چگونه کار می‌کند
1 minute می 3, 2026
ساخت سرور چت المنت بروی لینوکس
5 minutes آوریل 25, 2026
Geo Routing و Geo DNS
2 minutes آوریل 22, 2026

تقویم

سپتامبر 2026
شیدسچپج
 1234
567891011
12131415161718
19202122232425
2627282930 
« جولای    

عضویت

جدیدترین پست‌ها

آموزش نصب و راه‌اندازی RustDesk Server با Docker
آموزش نصب و راه‌اندازی RustDesk Server با Docker
2 minutes جولای 2, 2026
آموزش نصب و راه‌اندازی Matrix Synapse + Element Web + Coturn با Docker روی Ubuntu 24.04
4 minutes جولای 2, 2026
CXS چیست و چگونه کار می‌کند
1 minute می 3, 2026
ساخت سرور چت المنت بروی لینوکس
5 minutes آوریل 25, 2026
Geo Routing و Geo DNS
2 minutes آوریل 22, 2026

سلام