دانشنامه مارال هاست دانشنامه مارال هاست
  • صفحه اصلی
  • مقالات
    • هاست اشتراکی
    • دامنه
    • سرور مجازی
    • کنترل پنل سی‌پنل
    • کنترل پنل پلسک
    • کنترل پنل دایرکت ادمین
    • ایمیل
    • 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 در لینوکس؛ مدیریت دسترسی گروه‌ها و اجرای برنامه‌ها
لینوکس

آشنایی با Processها در لینوکس

process

مدیریت پردازش‌ها و مصرف منابع

مقدمه

هر برنامه‌ای که روی لینوکس اجرا می‌شود — از یک وب‌سرور گرفته تا یک اسکریپت ساده — در قالب یک یا چند Process به سیستم‌عامل شناسانده می‌شود. به‌عنوان مدیر سرور، توانایی مشاهده، بررسی و کنترل Processها یکی از مهارت‌های روزمره و حیاتی است؛ چه برای پیدا کردن یک سرویس که منابع زیادی مصرف می‌کند، چه برای متوقف کردن یک برنامه‌ی گیرکرده.

در این مقاله با مفهوم فرآیندها، نحوه‌ی مشاهده‌ی آن‌ها، مدیریت (متوقف کردن، اولویت‌بندی) و بررسی مصرف منابع سیستم آشنا می‌شویم.


Process چیست؟

فرآیند، یک نمونه‌ی(instance) در حال اجرا از یک برنامه است. وقتی یک برنامه (مثلاً nginx) اجرا می‌شود، سیستم‌عامل یک شناسه‌ی عددی یکتا به نام PID (Process ID) به آن اختصاص می‌دهد و آن را در حافظه مدیریت می‌کند.

هر فرآیند دارای ویژگی‌های زیر است:

  • PID — شناسه‌ی یکتای فرآیند
  • PPID (Parent PID) — شناسه‌ی فرآیندی که این فرآیند را ساخته است
  • User — کاربری که فرآیند به‌نمایندگی از او اجرا می‌شود
  • State — وضعیت فعلی (در حال اجرا، خواب، متوقف‌شده و …)
  • Resource usage — میزان مصرف CPU و حافظه

مشاهده‌ی Processها

دستور ps

ps (Process Status) لیست فرآیندهایی در حال اجرا را در یک لحظه نمایش می‌دهد.

نمایش کامل تمام فرآیندهای سیستم، همراه با User، مصرف CPU/حافظه و دستور اجراشده.

ps aux

فیلتر کردن خروجی برای پیدا کردن فرآیندهای مربوط به یک برنامه‌ی خاص.

ps aux | grep nginx

نمایش فرآیندها به همراه رابطه‌ی سلسله‌مراتبی (Parent/Child) به شکل درختی.

ps -ef --forest

خواندن خروجی ps aux

وقتی دستور ps aux را اجرا می‌کنید، خروجی شامل چندین ستون است که هرکدام اطلاعات مشخصی درباره‌ی Process می‌دهند. برای مثال:

USER     PID  %CPU  %MEM    VSZ  RSS TTY   STAT START   TIME COMMAND
www-data 1234  0.3   1.2  81234  9876 ?     Ssl  10:02   0:12 nginx: worker

هر ستون این‌طور خوانده می‌شود:

ستونتوضیح
USERکاربری که Process به‌نمایندگی از او اجرا می‌شود
PIDشناسه‌ی یکتای Process
%CPUدرصد مصرف CPU توسط این Process
%MEMدرصد مصرف حافظه‌ی RAM توسط این Process
VSZحجم حافظه‌ی مجازی (Virtual Memory) اختصاص‌یافته، به کیلوبایت
RSSحجم واقعی حافظه‌ی فیزیکی (RAM) استفاده‌شده، به کیلوبایت
TTYترمینالی که Process به آن متصل است (? یعنی بدون ترمینال، معمولاً یک سرویس پس‌زمینه)
STATوضعیت فعلی Process (جدول کامل در ادامه)
STARTزمان شروع اجرای Process
TIMEمجموع زمان واقعی CPU که تاکنون توسط این Process مصرف شده
COMMANDدستور یا مسیر برنامه‌ای که این Process از آن اجرا شده

کدهای ستون STAT

ستون STAT مهم‌ترین بخش برای عیب‌یابی سریع است، چون وضعیت لحظه‌ای Process را نشان می‌دهد:

کدوضعیت
Rدر حال اجرا (Running) یا آماده‌ی اجرا در صف
Sدر حالت خواب قابل‌قطع (Sleeping) — منتظر یک رویداد، رایج‌ترین وضعیت
Dخواب غیرقابل‌قطع (Uninterruptible Sleep) — معمولاً منتظر I/O دیسک؛ اگر Process زیادی طولانی در این وضعیت بماند، نشانه‌ی مشکل دیسک است
Tمتوقف‌شده (Stopped)، مثلاً با Ctrl+Z
ZZombie — Process تمام شده اما هنوز رکورد آن از حافظه پاک نشده (معمولاً به‌خاطر یک مشکل در Process والد)
<اولویت بالاتر از حد معمول (High Priority)
Nاولویت پایین‌تر از حد معمول (Low Priority، مرتبط با nice)
sProcess leader یک Session است
lMulti-threaded (چند Threadی)
+متعلق به گروه Foreground ترمینال است

نکته کاربردی: اگر با ps aux یا top متوجه شدید تعداد زیادی Process با وضعیت Z (Zombie) دارید، معمولاً به معنی وجود یک باگ در برنامه‌ای است که Processهای فرزند خود را به‌درستی مدیریت نمی‌کند؛ raw کردن این Processها نیاز به راه‌اندازی مجدد سرویس والد دارد، نه kill مستقیم روی خود Zombie (که اصلاً جواب نمی‌دهد).

دستور top

top نمایش زنده و لحظه‌ای از فرآیندها و مصرف منابع سیستم ارائه می‌دهد.

top

باز کردن نمای زنده؛ فرآیندها بر اساس بیشترین مصرف CPU مرتب می‌شوند (کلید q برای خروج).

آشنایی با Processها در لینوکس

دستور htop

نسخه‌ی مدرن‌تر و کاربرپسندتر top، با رابط رنگی و امکان اسکرول و جستجو.

htop
آشنایی با Processها در لینوکس

(در برخی توزیع‌ها نیاز به نصب جداگانه دارد: sudo apt install htop)

دستور btop

نسخه‌ای مدرن‌تر از top و htop با قابلیت رسم گراف میزان مصرف cpu, gpu, network و تعیین theme.

btop

این برنامه نیز با q متوقف می‌شود.

آشنایی با Processها در لینوکس

این دستور در اکثریت توزیع‌ها به صورت پیش‌فرض وجود ندارد و باید نصب شود.


مدیریت Processها

متوقف کردن یک Process با kill

kill 1234

ارسال سیگنال پیش‌فرض (SIGTERM، پایان دادن مودبانه) به فرآیندی با PID برابر ۱۲۳۴؛ به فرآیند فرصت می‌دهد قبل از بسته شدن، کارهای خود را ذخیره کند.

kill -9 1234

ارسال سیگنال SIGKILL؛ توقف فوری و اجباری فرآیند، بدون فرصت برای ذخیره یا پاک‌سازی. فقط زمانی استفاده کنید که kill معمولی جواب نداده باشد.

متوقف کردن بر اساس نام با pkill

pkill -f nginx

متوقف کردن تمام فرآیندهایی که نامشان یا خط دستورشان شامل “nginx” است؛ نیازی به دانستن PID نیست.

پیدا کردن PID با pgrep

pgrep -f nginx

نمایش لیست PIDهای مربوط به فرآیندهایی مطابق با الگوی داده‌شده؛ معمولاً قبل از kill برای پیدا کردن PID دقیق استفاده می‌شود.


اجرای Processها در پس‌زمینه و پیش‌زمینه (Background & Foreground)

هر فرآیندی که از ترمینال اجرا می‌کنید، به‌طور پیش‌فرض در Foreground اجرا می‌شود؛ یعنی ترمینال شما تا پایان آن فرآیند قفل می‌ماند. برای کارهای طولانی (مثل بکاپ‌گیری یا دانلود فایل بزرگ)، اجرا در Background به شما اجازه می‌دهد همزمان کارهای دیگری هم در همان ترمینال انجام دهید.

اجرای یک دستور مستقیماً در پس‌زمینه؛ علامت & در انتهای دستور، آن را بلافاصله به Background می‌فرستد و ترمینال آزاد می‌شود.

long-running-command &

نمایش لیست تمام فرآیندهایی که در Session فعلی ترمینال، در پس‌زمینه در حال اجرا هستند.

jobs

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

متوقف کردن موقت (Suspend) فرآیند فعلی و بازگرداندن کنترل ترمینال؛ فرآیند متوقف می‌شود اما از بین نمی‌رود.

Ctrl + Z

ادامه‌ی اجرای آخرین فرآیند متوقف‌شده، این بار در حالت Background.

bg

بازگرداندن آخرین فرآیند پس‌زمینه به Foreground (مثلاً وقتی نیاز دارید دوباره با آن تعامل مستقیم داشته باشید).

fg

بازگرداندن یک Job مشخص به Foreground بر اساس شماره‌اش (شماره‌ها را از خروجی jobs می‌گیرید).

fg %2

مشکل رایج: بسته شدن Process با قطع اتصال SSH

اگر یک فرآیند را در Background اجرا کنید ولی اتصال SSH شما قطع شود، معمولاً آن فرآیند هم متوقف می‌شود (چون به Session شما وابسته است). برای جلوگیری از این مشکل:

اجرای دستور طوری که حتی با بسته شدن ترمینال یا قطع SSH، به کار خود ادامه دهد. خروجی به‌طور پیش‌فرض در فایلی به نام nohup.out ذخیره می‌شود.

nohup long-running-command &

جدا کردن یک Job که از قبل در حال اجراست از Session فعلی ترمینال، بدون نیاز به متوقف و دوباره اجرا کردنش با nohup.

disown -h %1

نکته حرفه‌ای: برای کارهای طولانی و مهم روی سرور (مثل ایجاد backup سنگین از یک user)، ابزارهایی مثل tmux یا screen معمولاً گزینه‌ی بهتری نسبت به nohup هستند، چون اجازه می‌دهند بعداً به همان Session برگردید و خروجی زنده را هم ببینید.


اولویت‌بندی Processها با nice و renice

هر فرآیند یک مقدار Priority به نام nice value دارد که بین -20 (بالاترین اولویت) تا 19 (پایین‌ترین اولویت) قرار می‌گیرد. با تنظیم این مقدار می‌توان مشخص کرد کدام فرآیند باید زودتر به CPU دسترسی پیدا کند.

اجرای یک دستور جدید با اولویت پایین‌تر (مناسب برای کارهای سنگین پس‌زمینه که نباید مانع سرویس‌های اصلی شوند).

nice -n 10 command

تغییر اولویت یک فرآیند که از قبل در حال اجراست، بر اساس PID آن.

renice -n 5 -p 1234

بررسی مصرف منابع سیستم

نمایش میزان استفاده از حافظه‌ی RAM و Swap به‌صورت خوانا.

free -h

نمایش فضای آزاد و اشغال‌شده‌ی دیسک‌ها.

df -h
آشنایی با Processها در لینوکس
  • نمایش فضای دیسک مشابه دستور df برای حافظه ولی با رابط کاربری ترمینال(TUI) این دستور مانند یک file manager ساده نیز عمل می‌کند.
ncdu
آشنایی با Processها در لینوکس

برای استفاده از این بسته باید ابتدا آن را برای توزیع خود نصب کنید.

  • نمایش اطلاعات blockهای حافظه در لینوکس
lsblk
آشنایی با Processها در لینوکس
  • نمایش میزان مصرف دیسک‌های فیزیکی یا مجازی (LVM) با گراف
dysk
آشنایی با Processها در لینوکس

نمایش مدت زمان روشن بودن سیستم به همراه Load Average (میانگین بار سیستم در ۱، ۵ و ۱۵ دقیقه‌ی اخیر).

uptime

در دستورات top,htop و btop خروجی دستور uptime نیز وجود دارد.


مثال‌های عملی

سناریو ۱: پیدا کردن Processای که بیشترین CPU را مصرف می‌کند

top

سپس فرآیندها بر اساس مصرف CPU مرتب‌شده را بررسی کنید (پیش‌فرض top دقیقاً همین کار را می‌کند).

سناریو ۲: متوقف کردن یک سرویس

pgrep -f myapp
kill 4532

اگر بعد از چند ثانیه همچنان در حال اجرا بود:

kill -9 4532

سناریو ۳: اجرای یک بکاپ سنگین بدون تأثیر روی عملکرد سرور

nice -n 15 tar -czf backup.tar.gz /var/www

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

۱. استفاده‌ی مستقیم از kill -9 بدون امتحان کردن حالت عادی
kill -9 توقف اجباری است و به Process اجازه نمی‌دهد فایل‌های باز را درست ببندد یا داده‌ای را ذخیره کند. همیشه ابتدا kill معمولی را امتحان کنید.

۲. اشتباه گرفتن PID والد و فرزند
گاهی متوقف کردن یک Process فرزند (Child) باعث می‌شود Process والد (Parent) دوباره آن را بسازد. برای بررسی رابطه‌ی والد/فرزند از ps -ef --forest استفاده کنید.

۳. نادیده گرفتن Load Average بالا بدون بررسی علت
عدد بالای Load Average لزوماً به معنی مشکل CPU نیست؛ ممکن است ناشی از فرآیندهایی باشد که منتظر I/O دیسک هستند. قبل از نتیجه‌گیری، با top یا htop بررسی کنید کدام منبع (CPU, Memory, Disk I/O) واقعاً درگیر است.


مطالعه بیشتر

برای یادگیری دستوراتی مثل du, df و بررسی عمیق‌تر فضای دیسک، مقاله‌ی مهم‌ترین دستورات پایه‌ای برای هر sysadmin را ببینید.

اگر می‌خواهید بدانید یک Process با چه User ای در حال اجراست و چرا به برخی فایل‌ها دسترسی ندارد، مقاله‌ی Ownership و Permission در لینوکس می‌تواند کمک کند.

مستندات رسمی:

  • ps(1) — man7.org
  • kill(1) — man7.org

جمع‌بندی

در این مقاله با مفهوم Process، دستورات مشاهده (ps, top, htop)، مدیریت (kill, pkill, pgrep) و اولویت‌بندی (nice, renice) آشنا شدید. این مهارت‌ها برای عیب‌یابی روزمره‌ی سرور — از یک سرویس گیرکرده تا یک برنامه‌ی پرمصرف — ضروری هستند.


چیت شیت Processها

دستورکاربرد
ps auxنمایش تمام Processها
top / htop/btopنمای زنده‌ی Processها و منابع
kill PIDمتوقف کردن مودبانه‌ی یک Process
kill -9 PIDمتوقف کردن اجباری
pkill -f nameمتوقف کردن بر اساس نام
pgrep -f nameپیدا کردن PID بر اساس نام
& commandاجرای دستور در پس‌زمینه(background)
jobsنمایش لیست فعالیت‌های پس‌زمینه‌ی session فعلی
ctrl + zتوقف موقت (suspend) فرآیند فعلی
ctrl + cتوقف کامل فرآیند فعلی و بازگرداندن کنترل session به کاربر
bgادامه آخرین فرآیند متوقف شده در پس‌زمینه
fg / fg %nبازگرداندن یک پروسه به پیش‌زمینه
& nohup commandاجرای یک دستور مستقل از session
nice -n value commandاجرا با اولویت مشخص
renice -n value -p PIDتغییر اولویت Process در حال اجرا

در مقاله‌ی بعدی، به سراغ تغییر Hostname در لینوکس می‌رویم.

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

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

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

مطالب اخیراً بازدیدشده

  • آموزش بروزرسانی کامل سیستم‌عامل لینوکس همه توزیع ها
  • آموزش کامل nmap
  • آموزش تغییر Hostname سرور در لینوکس
  • آموزش نصب و راه‌اندازی SSH Key Authentication در لینوکس
  • آموزش نصب، پیکربندی و استفاده از Auditd در لینوکس
  • بعد از خرید سرور مجازی لینوکس(VPS)، اولین کارهایی که باید انجام دهید
  • آموزش کامل UFW در لینوکس؛ راه‌اندازی، مدیریت و ایمن‌سازی فایروال سرور
  • آموزش محدود کردن کاربران مجاز SSH در لینوکس
  • آموزش تنظیم MaxAuthTries در SSH؛ محدود کردن تعداد تلاش‌های ورود ناموفق
  • آموزش نصب Nextcloud با Docker Compose
  • عیب‌یابی تفاوت نتیجه DNS بین سرور و کامپیوتر شخصی
  • مشاهده بیشتر

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

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

آشنایی با Processها در لینوکس

کپی کردن لینک

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
شیدسچپج
1234567
891011121314
15161718192021
22232425262728
293031 
« جولای    

عضویت

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

آموزش نصب و راه‌اندازی 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

سلام