Future ForgeFuture ForgeFuture ForgeFuture Forge
خدماتنمونه‌کارهاپکیج‌هاابزارهای رایگانیادداشت‌هادرباره ماتماس
شروع پروژه
  1. خانه
  2. /یادداشت‌ها
Future ForgeFuture Forge

استودیوی مهندسی محصول — طراحی، ساخت و استقرار نرم‌افزار.

پروژه‌تان را مطرح کنید

ارتباط

hello@futureforge.ir09128464105
Future ForgeFuture Forge

استودیوی مهندسی محصول — طراحی، ساخت و استقرار نرم‌افزار.

خدمات

طراحی و ساخت محصولتوسعه فول‌استکممیزی مهندسیمشاوره معماریزیرساخت و استقرارهوش مصنوعی در محصول

کاوش

نمونه‌کارهایادداشت‌هاپرسش‌هاپکیج‌ها

ابزارهای رایگان

ممیزی مهندسیمشاور معماریتخمین پروژهابزار پرامپت

شرکت

درباره ماتماسحریم خصوصیشرایط استفاده

پروژه‌تان را مطرح کنید

مسئله و محدودیت را بنویسید. اگر تطابق داشته باشیم، برای گفتگو هماهنگ می‌کنیم.

پروژه‌تان را مطرح کنید

ارتباط

hello@futureforge.ir09128464105
GitHubLinkedIn

© 2026 FutureForge. همه حقوق محفوظ است.

خانهخدماتابزارهای رایگانشروع پروژه
عملیات و استقرار

مدیریت فرایند در ویندوز؛ از Task Manager تا PowerShell

شناخت Process و PID در ویندوز، استفاده از Task Manager، Get-Process و Stop-Process، تفاوت با سرویس و اشتباه‌های خطرناک هنگام kill.

سا
سهیل ابراهیم‌پور

بنیان‌گذار و مهندس محصول

·۲۹ شهریور ۱۴۰۵·10 دقیقه مطالعه
مدیریت فرایند ویندوزTask ManagerGet-ProcessStop-ProcessPIDprocess treeresource usage
Task Manager و استیکی Get-Process

وقتی IDE هنگ می‌کند، سرور توسعه پورت را رها نمی‌کند، یا فن لپ‌تاپ بدون دلیل می‌چرخد، با فرایند طرفید نه با جادو. مدیریت فرایند یعنی دیدن چه چیزی اجرا می‌شود، چقدر منابع می‌گیرد، والدش کیست، و چگونه مودبانه یا در صورت نیاز اجباری تمامش کنید.

این مقاله مدل ذهنی Process در ویندوز، مسیر UI با Task Manager، مسیر خط فرمان با PowerShell، و مرز با Windows Service را می‌سازد. پیدا کردن صاحب پورت در ۱۸۶ جدا آمده است.

Get-Process Stop-Process و تب‌های Task Manager

پاسخ کوتاه

هر برنامهٔ در حال اجرا یک یا چند فرایند با PID دارد. Task Manager دید سریع و امن برای کاربر است؛ Get-Process و Stop-Process کنترل اسکریپت‌پذیر می‌دهند. قبل از Force، بدانید فرایند متعلق به اپ شماست یا سرویس سیستمی. کشتن خام سرویس گاهی توسط Service Control Manager دوباره زنده می‌شود یا سیستم را ناپایدار می‌کند.

اول شناسایی، بعد توقف. PID را از روی حدس وارد نکنید.

فرایند در ویندوز یعنی چه؟

فرایند ظرف اجرای برنامه است: فضای آدرس، هندل‌ها، رشته‌ها (threadها) و توکن امنیتی. یک اپ می‌تواند چند فرایند داشته باشد (مثلاً مرورگر). PID تا پایان عمر آن نمونه یکتاست؛ بعد از restart همان برنامه PID جدید می‌گیرد.

برخلاف تصور رایج، بستن پنجره همیشه یعنی پایان تمیز همهٔ فرایندهای مرتبط نیست. بعضی اپ‌ها در tray می‌مانند یا فرایند فرزند جدا نگه می‌دارند. برای توسعهٔ محلی، این موضوع وقتی مهم است که فکر می‌کنید پورت آزاد شده ولی هنوز listen است.

Task Manager؛ نقطهٔ شروع بصری

با Ctrl+Shift+Esc باز کنید. تب Processes مصرف CPU و Memory را نشان می‌دهد؛ با کلیک راست می‌توان End task کرد. برای جزئیات بیشتر، نمای Details را ببینید تا PID و نام اجرایی مشخص شود.

  • برای اپ کاربر عادی معمولاً End task کافی است.
  • اگر پاسخ نمی‌دهد، End task را تکرار کنید؛ Force از PowerShell مرحلهٔ بعد است.
  • ستون PID را روشن کنید تا با خروجی ترمینال مطابقت بدهید.

Task Manager برای آموزش و اضطرار عالی است؛ برای اتوماسیون و تکرارپذیری، PowerShell بهتر است.

مشاهده با Get-Process

powershell

Get-Process Get-Process -Name node -ErrorAction SilentlyContinue Get-Process | Sort-Object WorkingSet64 -Descending | Select-Object -First 10 Name,Id,CPU,WorkingSet64

خروجی شیء است؛ می‌توانید فیلتر و مرتب کنید بدون پارس متن tasklist. برای دیدن مسیر اجرایی در صورت دسترسی:

powershell

Get-Process -Id 1234 | Select-Object Name,Id,Path,StartTime

گاهی Path خالی است مگر مجوز یا معماری درست باشد؛ مستند Get-Process به محدودیت‌های ۳۲/۶۴ بیتی اشاره می‌کند.

درخت و والد؛ چرا مهم است؟

دانستن والد کمک می‌کند بفهمید فرایند یتیم ابزار شماست یا بخشی از زنجیرهٔ نصب/سرویس. در PowerShell می‌توان از WMI/CIM استفاده کرد:

powershell

Get-CimInstance Win32_Process -Filter "Name='node.exe'" | Select-Object ProcessId,ParentProcessId,CommandLine

CommandLine برای تشخیص اینکه کدام پروژهٔ Node بالا است طلایی است — مخصوصاً وقتی چند instance هم‌نام دارید.

پایان‌دادن کنترل‌شده

powershell

Stop-Process -Name notepad Stop-Process -Id 1234 Stop-Process -Id 1234 -Force

بدون Force، درخواست نزدیک‌تری به خاتمهٔ عادی است. Force خشن‌تر است و فرصت cleanup را کم می‌کند. برای فرایندهای سرویس، Stop-Service را ترجیح دهید تا وابستگی‌ها و سیاست بازیابی رعایت شود.

روشمناسب برایریسک
End task در Task Managerاپ UI هنگ‌کردهکم تا متوسط
Stop-Processابزار توسعه، PID مشخصمتوسط اگر PID اشتباه
Stop-Process -Forceفرایند جواب‌ندہاز دست رفتن دادهٔ ذخیره‌نشده
Stop-Serviceسرویس ویندوزقطع وابسته‌ها

مصرف منابع؛ کی نگران شویم؟

CPU بالا کوتاه‌مدت هنگام compile طبیعی است. CPU یا حافظهٔ دائم بالا بدون workload یعنی نشت، حلقهٔ بی‌نهایت، یا اسکنر امنیتی. دیسک ۱۰۰٪ گاهی همان آنتی‌ویروس روی node_modules است نه باگ شما.

powershell

Get-Process | Sort-Object CPU -Descending | Select-Object -First 5 Get-Process | Sort-Object WorkingSet64 -Descending | Select-Object -First 5

مرز با سرویس و svchost

خیلی از سرویس‌های ویندوز زیر host فرایندهای مشترک اجرا می‌شوند. کشتن تصادفی svchost می‌تواند شبکه، صوت یا اجزای سیستم را بشکند. اگر نام را نمی‌شناسید، اول Get-Service و مستند را ببینید نه End task فوری.

سناریوی توسعه‌دهنده: سرور محلی رها نمی‌شود

  1. نام فرایند را حدس بزنید (node، python، dotnet).
  2. با Get-Process یا CommandLine نمونهٔ درست را پیدا کنید.
  3. اگر پورت مشخص است، از ۱۸۶ مالک پورت را بگیرید.
  4. Stop-Process روی همان PID.
  5. دوباره گوش‌دادن پورت را با Get-NetTCPConnection تأیید کنید.

powershell

Get-NetTCPConnection -LocalPort 5000 -ErrorAction SilentlyContinue | ForEach-Object { Get-Process -Id $_.OwningProcess }

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

  • کشتن همهٔ node.exeها وقتی فقط یکی از پروژه‌ها مشکل دارد.
  • ریبوت به‌عنوان اولین راه‌حل برای پورت اشغال.
  • Force دائمی بدون فهم دلیل hang.
  • نادیده گرفتن آنتی‌ویروس به‌عنوان فرایند پرمصرف.
  • یکی‌گرفتن بسته شدن پنجره با مرگ فرایند پس‌زمینه.

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

فرق process و thread چیست؟

Thread مسیر اجرای داخل فرایند است. معمولاً کل فرایند را مدیریت می‌کنید مگر در دیباگ پیشرفته.

taskkill هنوز لازم است؟

در cmd و اسکریپت‌های قدیمی بله. در PowerShell مدرن Stop-Process خواناتر است.

چرا بعد از Stop دوباره برمی‌گردد؟

احتمالاً سرویس با سیاست بازیابی، watchdog، یا ابزار parent دوباره آن را ساخته است.

اگر راه‌حل شما تغییر سطح Machine بود، بگویید چرا User کافی نبود. اگر Force کردید، بگویید چرا توقف ملایم شکست. این انضباط کوچک کیفیت عملیاتی تیم را بالا می‌برد.

قبل از اینکه مشکل را بسته‌شده اعلام کنید: نشست جدید را تست کنید، مسیر یا پورت یا سرویس را دوباره با ابزار ساخت‌یافته تأیید کنید، و یک خط در یادداشت تیمی بنویسید که علت ریشه‌ای چه بود. بدون این سه قدم، همان تیکت هفتهٔ بعد برمی‌گردد.

چک‌لیست پایانی قبل از بستن تیکت

بعضی فرایندهای سیستمی را بدون ارتفاع نمی‌بینید یا نمی‌توانید متوقف کنید. Elevated بودن دائمی عادت بدی است. فقط برای همان کار ترمینال Elevated باز کنید و ببندید. کشتن فرایند کاربر دیگر در محیط سازمانی ممکن است خلاف سیاست باشد.

مجوز و ارتفاع

ابزارهای Sysinternals مثل Process Explorer برای موارد سخت‌تر عمق بیشتری می‌دهند، ولی برای اکثر روزهای توسعه Task Manager و Get-Process کافی‌اند. ابزار سنگین را وقتی شواهد کافی ندارید وسط نگذارید.

Hang یعنی UI پاسخ نمی‌دهد؛ لزوماً CPU صد نیست. گاهی قفل I/O یا انتظار شبکه است. CPU بالا ممکن است کار مفید باشد. قبل از Force، ببینید آیا ذخیرهٔ کار ممکن است و آیا پنجرهٔ Not Responding فقط موقتی است.

Hang در برابر CPU بالا

برای اپ‌های .NET و Node که worker می‌سازند، کشتن فقط والد گاهی کافی نیست یا برعکس، کشتن فرزند بدون والد حلقهٔ restart می‌سازد. درخت را یک‌بار ببینید.

نام فرایند، PID، مسیر یا CommandLine، کاربر اجراکننده، و اینکه سرویس است یا نه را قبل از Stop مشخص کنید. اگر چند instance هم‌نام دارید، بدون CommandLine تقریباً حدس می‌زنید. روی ماشین اشتراکی این حدس هزینه دارد.

شناسایی قبل از اقدام؛ چک‌لیست سی‌ثانیه‌ای

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

مستند رسمی را نخواندن و اعتماد به اولین نتیجهٔ جستجو، اجرای همیشگی Elevated، و تغییر Machine برای مشکل User، سه الگوی پرهزینه‌اند. هزینهٔ واقعی‌شان معمولاً ساعت‌ها بعد معلوم می‌شود؛ وقتی محیط برای همکار یا CI می‌شکند.

اشتباه‌های سطح بالاتر

در پایان تمرین، همه چیز را به حالت اول برگردانید: فرایند تست را ببندید، متغیر موقت را رها کنید، و سرویس را اگر تغییر دادید به Startup Type قبلی برگردانید. پاک‌سازی بخشی از حرفه‌ای‌گری است.

یک سرور محلی بالا بیاورید، پورتش را پیدا کنید، فرایند را بشناسید، یک متغیر محیطی موقت ست کنید، PATH را فقط مشاهده کنید بدون تغییر مخرب، وضعیت یک سرویس بی‌خطر را بخوانید، و پنج رویداد اخیر Application را ببینید. این مدار بسته، دانش را از حالت خواندنی به حالت عضلانی می‌برد.

تمرین پیشنهادی سی‌دقیقه‌ای

اگر از لینوکس آمده‌اید، معادل ذهنی بسازید ولی فرمان را عیناً ترجمه نکنید. مدل سرویس ویندوز با systemd شباهت مفهومی دارد و تفاوت ابزاری. مدل env با export شباهت دارد و تفاوت سطح Machine و User.

مفاهیم این مقاله را با Terminal، PowerShell، فرایند، پورت، env، PATH، سرویس و Event Viewer به‌صورت حلقه ببینید نه جزایر جدا. بیشتر تیکت‌های واقعی دو یا سه حلقه از این زنجیره را درگیر می‌کنند.

ارتباط با بقیهٔ سری ویندوز

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

هر بار که راه‌حل موقتی پیدا می‌کنید، همان را به یک فرمان قابل‌کپی در یادداشت شخصی تبدیل کنید. هفتهٔ بعد همان فرمان را از حافظه نمی‌نویسید؛ از دفترک می‌آورید و خطا کمتر می‌شود.

در کار واقعی، مشکل‌ها ترکیبی‌اند: پورت اشغال، PATH کهنه، سرویس متوقف، و ترمینال با پروفایل غلط همزمان ظاهر می‌شوند. به‌جای تغییر همزمان همه چیز، یک متغیر را ثابت نگه دارید و فقط یک فرض را آزمایش کنید. این نظم علمی سرعت عیب‌یابی را بیشتر از هر میانبر افزایش می‌دهد.

عمق عملی بیشتر برای کار روزانه

تغییرات Machine، سیاست دامنه، و آنتی‌ویروس مرکزی معمولاً خارج از اختیار شماست. آنچه در اختیار شماست: پروفایل Terminal، اسکریپت User، انتخاب پورت پروژه، و خواندن لاگ. روی لایهٔ قابل‌کنترل تمرکز کنید و برای بقیه تیکت شفاف با شاهد بسازید.

مرز مسئولیت توسعه‌دهنده و IT

اگر وسط راه مجبور به Force شدید، بعداً علت را پیدا کنید که چرا توقف ملایم کار نکرد: قفل فایل، انتظار شبکه، یا بن‌بست رشته‌ها. Force بدون یادگیری، همان مشکل را تکرار می‌کند.

در هر مرحله یک شاهد بنویسید: خروجی کوتاه فرمان یا Event ID. وقتی از کسی کمک می‌گیرید، شاهد بهتر از توصیف احساسی است. همین عادت در تیم‌های دورکاری ارزش دوچندان دارد.

فرض کنید بعد از ریبوت، API محلی بالا نمی‌آید. اول وضعیت سرویس وابسته را بخوانید، بعد پورت را با Get-NetTCPConnection چک کنید، بعد PATH و متغیرهای لازم اپ را در همان نشست تأیید کنید، و در نهایت اگر سرویس fail شده Event Viewer را روی زمان بوت فیلتر کنید. این ترتیب از پراکنده کاری جلوگیری می‌کند.

سناریوی ترکیبی که باید یک‌بار کامل بروید

خلاصه

مدیریت فرایند در ویندوز با شناسایی PID و مسیر/خط فرمان شروع می‌شود، با Task Manager برای اضطرار ادامه می‌یابد، و با Get-Process/Stop-Process برای کار دقیق و تکراری کامل می‌شود. Force آخرین ابزار باشد و سرویس را با ابزار سرویس مدیریت کنید. مرحلهٔ بعد: مالک پورت را سریع پیدا کنید.

منابع و مراجع

  • Microsoft Learn — Get-Process — https://learn.microsoft.com/powershell/module/microsoft.powershell.management/get-process
  • Microsoft Learn — Stop-Process — https://learn.microsoft.com/powershell/module/microsoft.powershell.management/stop-process
  • Microsoft Learn — Get-CimInstance — https://learn.microsoft.com/powershell/module/cimcmdlets/get-ciminstance
  • Microsoft Support — Task Manager — https://support.microsoft.com/windows/task-manager
  • Microsoft Learn — Win32_Process class — https://learn.microsoft.com/windows/win32/cimwin32prov/win32-process

نویسنده

سا

سهیل ابراهیم‌پور بنیان‌گذار FutureForge است. روی طراحی محصول، معماری و استقرار نرم‌افزار سفارشی کار می‌کند.

یادداشت‌های مرتبط

یادداشت‌های مرتبط

دسته‌بندی‌ها

خدمات مرتبط

از یادداشت تا پروژه

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

اگر در انتخاب معماری یا مسیر توسعه مطمئن نیستید، می‌توانید درباره پروژه صحبت کنیم.

مسئله و محدودیت را بنویسید. اگر تطابق داشته باشیم، برای گفتگو هماهنگ می‌کنیم.

سهیل ابراهیم‌پور
یادداشت‌ها
چگونه فرایندها را در لینوکس متوقف یا بکشیم؟
ps و top و htop: دیدن و پایش فرایندها در لینوکس
فرایند در لینوکس چیست؟ PID، والد و چرخهٔ حیات
Logging چیست؟ ثبت رویداد برای تشخیص و پاسخ به حادثه
تعیین اندازهٔ سرور: RAM، CPU و Storage بر اساس Workload

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

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

۲۹ شهریور ۱۴۰۵

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

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

۲۹ شهریور ۱۴۰۵

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

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

۲۹ شهریور ۱۴۰۵

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

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

۲۹ شهریور ۱۴۰۵

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

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

۲۹ شهریور ۱۴۰۵
همه یادداشت‌ها219
معماری نرم‌افزار13
واژه‌نامه37
عملیات و استقرار87
مهندسی محصول74
راهنمای وب8
طراحی و ساخت محصول
توسعه فول‌استک
ممیزی مهندسی
مشاوره معماری
زیرساخت و استقرار
پروژه‌تان را مطرح کنید
ابزارهای رایگان
پروژه‌تان را مطرح کنید