دوره‌ های آموزشی نووا
ژانویه 26, 2020

دستور tasklist و taskkill

Avatar photo
برنامه نویس MERN Stack
دستور tasklist و taskkill

در سیستم عامل ویندوز هر برنامه ای که در حال اجرا باشد یک Process محسوب میشود، از برنامه های که کاربران آنها را اجرا میکنند (مثل Google Chrome یا Media Player) تا برنامه های که سیستم عامل در پس زمینه از آنها استفاده میکند. (مثل سرویس های ویندوز) همانطور که میدانید هر برنامه ای که در حال اجرا باشد به اندازه نیاز خود از منابع سخت افزاری استفاده میکند، از اینرو برای بررسی برنامه های در حال اجرا و مدیریت منابع سخت افزاری، باید Process برنامه ها را در ابزار Task Manager بررسی کنیم. در این آموزش با دو دستور Tasklist و Taskkill آشنا خواهید شد که دقیقا کارشان همانند ابزار Task Manager است و به شما اجازه میدهند فهرست Process های ویندوز را دریافت کرده و آنها را مدیریت کنید.

ویدیو آموزش دستور tasklist و دستور taskkill

بررسی برنامه های درحال اجرا با دستور Tasklist

دستور Tasklist به شما اجازه میدهد همه برنامه های که در حال اجرا هستند را بررسی کنید، برای استفاده از این دستور کافیست آنرا در خط فرمان ویندوز وارد کنید. برای مثال:

Tasklist
دستور tasklist

پس از وارد نمودن دستور Tasklist با جدول بلندی از برنامه های درحال اجرا مواجه خواهید شد. در ادامه برخی از بخشهای مهم این جدول را توضیح میدهم:

نام پروسس (Image Name): در این قسمت نام فایل اجرایی برنامه های در حال اجرا را مشاهده میکنید.

مشخصه پروسس (PID): در این قسمت آی دی مرتبط با هر برنامه ی در حال اجرا مشخص شده است.

حافظه مورد استفاده (Mem Usage): در این قسمت حافظه RAM مورد استفاده به کیلوبایت مشخص شده است.

همانطور که در تصویر بالا مشاهده میکنید برنامه csrss.exe با پروسس آی دی 532 حدود 5000 کیلوبایت از حافظه سیستم استفاده میکند.

این ساده ترین روش برای استفاده از دستور Tasklist بود. دستور Tasklist پارامتر های زیادی دارد، برای بررسی پارامترهای این دستور کافیست tasklist را به همراه علامت سوال وارد کنید. برای مثال:

Tasklist /?

توضیح پارامترهای دستور Tasklist

پارامترتوضیحات
/Sمشخص نمودن Hostname یا IP سیستم راه دور (Remote System)
/Uمشخص نمودن نام حساب کاربری در سیستم راه دور
/Pمشخص نمودن رمز عبور حساب کاربری مشخص شده راه دور
/Mفهرست گرفتن از ماژول های مشخص شده (exe,dll) اگر پارامتر به تنهای وارد شود همه ماژولهای مرتبط فهرست گرفته خواهند شد.
/SVCفهرست کلیه سرویس های که از Process مشخص شده میزبانی میکنند.
/APPSفهرست گرفتن از برنامه های App Store ویندوز به همراه PID آنها
/Vنمایش جزئیات مرتبط با هر Process
/FIتعیین فیلتر برای فهرست گیری از Process های مشخص (فیلتر های قابل استفاده: Status – Image Name – PID – Session – SessionName – CPUTime – MemUsage – Username – Services – WindowsTitle – Modules)
/FOمشخص نمودن نوع نمایش Process ها (به صورت جدول – فهرست وار – CSV)
/NHنمایش داده نشدن Header در فهرست Process ها

مثال های کاربردی از دستور Tasklist

اجازه دهید دستور Tasklist را در چندین مثال مختلف نشان دهم تا با این دستور بیشتر آشنا شوید. مثلا برای فهرست گیری برنامه های درحال اجرا در یک سیستم راه دور (Remote System) میبایست از پارامتر های زیر در دستور Tasklist استفاده کنیم:

Tasklist /s 192.168.10.126 /u Administrator /p AdminPass

Tasklist /s Mohammad-PC /u Administrator /p AdminPass

هر دو دستور بالا به یک صورت عمل میکنند یکی با استفاده از آدرس IP پروسس های سیستم مقصد را دریافت میکند و دیگری با استفاده از نام کامپیوتر (Hostname) اینکار را انجام میدهد.

فهرست گرفتن از پروسس های فعال

برای فهرست گرفتن از پروسس های فعال با نمایش جزئیات هر پروسس باید از دستور Tasklist به همراه پارامترهای /v و /fi استفاده کنید. (فیلتر مرتبط با پروسس های فعال: Status eq running)

Tasklist /v /fi "status eq running"

برنامه های فریز شده (به اصطلاح هنگ کردن)

یکی از مشکلاتی که در نسخه های قدیمی ویندوز بیش از حد اتفاق میافتاد، فریز شدن برنامه ها بود که به اصطلاح به آن هنگ کردن برنامه میگفتند. در واقع برنامه در حالت Not Responding قرار میگرفت، برای فهرست گرفتن از برنامه های که در این وضعیت قرار دارند باید به صورت زیر عمل کنید:

Tasklist /fi "status eq not responding"

فهرست گیری بر اساس ماژول های مورد استفاده

برای فهرست گیری از Process های ویندوز بر اساس ماژول های مورد استفاده، میتوانید از دستور Tasklist به همراه پارامترهای /fi و فیلتر modules استفاده کنید. برای مثال:

Tasklist /fi "modules eq ntdll.dll"

نمایش App های در حال اجرا (Store)

برای فهرست گرفتن از App store ها که در حال اجرا هستند، میتوانید از دستور tasklist به همراه پارامتر /Apps و پارامتر /fi و فیلتر status eq running استفاده کنید. برای مثال:

Tasklist /apps /fi "status eq running"

بستن برنامه های درحال اجرا با دستور Taskkill

تا اینجا یاد گرفتیم با دستور Tasklist فهرست Process های ویندوز را دریافت کنیم، حال برای بستن این Process ها باید از دستور Taskkill استفاده کنیم. بستن برنامه ها با دستور Taskkill بسیار ساده میباشد کافیست دستور Taskkill را به همراه پارامتر /pid و مشخص نمودن PID برنامه مورد نظر وارد نمود. مثلا برای بستن برنامه ای که پروسس آی دی آن 64384 میباشد دستور taskkill به شکل زیر نوشته میشود:

Taskkill /pid 64384

پارامترهای دستور Taskkill

به طور کلی روشهای متفاوتی برای بستن برنامه ها با دستور Taskkill وجود دارد، در ادامه برای یادگیری این روشها، فهرست پارامترهای کاربردی دستور Taskkill را به شما توضیح خواهم داد:

پارامترتوضیحات
/Sمشخص نمودن Hostname یا IP سیستم راه دور (Remote System)
/Uمشخص نمودن نام حساب کاربری در سیستم راه دور
/Pمشخص نمودن رمز عبور حساب کاربری مشخص شده راه دور
/FIتعیین فیلتر برای فهرست گیری از Process های مشخص (فیلتر های قابل استفاده: Status – Image Name – PID – Session – SessionName – CPUTime – MemUsage – Username – Services – WindowsTitle – Modules)
/PIDمشخص کردن PID برای بستن پروسس
/IMمشخص نمودن نام فایل اجرایی برنامه برای بستن آن با Taskkill
/Tبستن پروسس مشخص شده با تمام پروسس های زیر مجموع آن
/Fبستن اجباری پروسس ها (پروسس های که با زبان خوش بسته نمیشن)

 بستن برنامه ها با cmd

مثال های کاربردی از دستور Taskkill

در ادامه همراه با نووا بلاگ باشید تا چند مثال کاربردی از دستور taskkill را با هم بررسی کنیم، برای بستن پروسس ها با استفاده از نام فایل اجرایی آنها دستور Taskkill به شکل زیر نوشته میشود:

Taskkill /im explorer.exe

مثلا در دستور بالا مشخص شده محیط Explorer ویندوز باید متوقف شود. توجه کنید برای مشخص نمودن نام فایل اجرایی پروسس باید نام را به صورت کامل و به همراه پسوند آن وارد کنید.

بستن اجباری برنامه های که فریز شده اند (هنگ)

برای بستن برنامه های که فریز شده اند یا در وضعیت Not Responding قرار دارند، باید دستور Taskkill را به صورت زیر وارد کنید:

Taskkill /f /fi "status eq not responding"

همانطور که متوجه شدید برای فهرست گیری از Process های در حال اجرا، باید از دستور Tasklist استفاده کنید و برای بستن این Process ها از دستور Taskkill استفاده کنید.

اگر سوال یا انتقادی نسبت به آموزش دستور tasklist و taskkill دارید نووا بلاگ را از محبت خود محروم نکنید.

23 پاسخ به “دستور tasklist و taskkill”

  1. Avatar photo erfan pak گفت:

    ببخشید میشه بگید اون sample که آخر این اومده
    Taskkill.exe /f (forcefully) /im (image name) sample.exe
    رو توضیح ندادید
    جزو دستوره؟
    کارش چیه؟
    چرای برای مثالِ
    Taskkill.exe /f /im explorer.exe
    explorer اومد؟
    exe. آخرش واسه چیه؟
    به نظرم اگه این توضیحاتو هم اضاف کنید خیلی بهتر میشه
    مرسی خسته نباشید

    • این آموزش کمی قدیمه و هنوز هیچ ویرایشی رو انجام نشده
      Sample.exe به منظور یک دستور نمونه یا مثال استفاده شده
      explorer.exe فایل اجرای محیط گرافیکی ویندوز که به عنوان مثال ازش استفاده کردم
      چشم

  2. Avatar photo erfan pak گفت:

    این بخش روهم خوب متوجه نشدم:
    “و پارامتر IM برای مشخص کردن Process می باشد”
    چیشو مشخص میکنه؟
    ببخشید که سوالات زیاده ولی من تا یه چیزو کامل یادنگیرم بیخیال نمیشم
    🙂
    ممنون

    • منظورم همون مشخص کردن Process هست که قرار توسط دستور Taskkill بسته بشه
      بعد از پارامتر -IM باید اسم Process رو بدی که میخوای توسط دستور Taskkill بسته شه
      خواهش میکنم – باعث افتخار که بتونم کمک کنم.

  3. Avatar photo justa گفت:

    سلام . خیلی ممنون از مطالب مفیدتون
    اگه میشه pdf این مقاله رو هم قرار بدید که بصورت آفلاین هم بهشتون دسترسی داشته باشم.

  4. Avatar photo midya گفت:

    داداش ازت ممنونم واقعا مفید بود

  5. Avatar photo طاهری گفت:

    سلام خسته نباشید. ممنون از مطب مفیدی که گذاشتید.

    من یک سوال در همین ارتباط داشتم که چند هفته است برای یک پروژه ویژوال وقتم رو گرفته و خیلی گیر رفع این مشکل هستم.

    اگر با این دستور explorer را ببندیم آیا دستور خط فرمانی دیگری هست که مجددا بتونیم explorer را باز کنیم.
    یعنی به جای باز کردن پنجره task manager و اجرای گزینه new task آیا میشه از طریق خط فرمان اینکار را انجام داد؟
    اگر بتونید برای رفع این مشکل به من کمک کنید خیلی ممنون میشم.

  6. Avatar photo muhammad ibrahim گفت:

    سلام
    ممنون از موضوعات مفید تون
    تشکر

  7. Avatar photo مهرداد گفت:

    سلام ببخشید اگه میخوایم برنامه svchost رو ببندیم چیکار کنیم؟
    چون تو ویندوز svchost زیاد هست
    نمیشه ادرس مربوط به پوشه برنامه رو بدیم؟
    به جز pid راه دیگه هم داره

    • سلام
      برنامه svchost برای خود ویندوز و سرویس ها و برنامه های زیادی وابسته به این برنامه هستند، شما نمیتونید این برنامه رو متوقف کنید.
      موفق باشید 🙂

  8. Avatar photo محسن گفت:

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

  9. Avatar photo فرشاد گفت:

    سلام، دستور رو که اجرا میکنم به محض باز شدن بسته میشه. لطفا راهنمایی کنید، مطالب بسیار کاربردی بود.

    سپاس

  10. Avatar photo محمد گفت:

    با سلام و تشکر از آموزش های مفید شما
    اگر بخوام تو یه بچ اسکریپت بنویسیم اگر برنامه X تو tasklist نبود اجراش کن چطور میتونم؟ممنون

  11. Avatar photo آرمان اسکویی گفت:

    سلام ممنون توضیحات تکمیل بود فقط یک مورد که داخل هیچ سایتی اشاره نشده و هر مدلی تست میکنم کار نمیکنه این هستش که :
    بنده روی یک سیستم و یک ویندوز چندین یوزر ویندوز ایجاد کردم که همشون به صورت هم زمان فعال هستند و داخل همشون یک نرم افزار باز هستش و کار میکنه ، گاهی وقت ها نیاز میشه که داخل یکی از این یوزرهای ویندوز ، اون نرم افزار بسته بشه ولی از اونجایی که هنگ میکنه ، باید به زور بستش …
    حالا با دستوری زیر :
    Taskkill /im explorer.exe /f
    برنامه بسته میشه ، اما داخل تمام یوزرهای ویندوز بسته میشه !
    که نیاز من این هستش که فقط داخل یک یوزر بسته بشه .
    اگر ممکنه بفرمایید دستور رو به چه شکلی باید بزنم که فقط داخل یک یوزر خاص بسته بشه
    با تشکر

  12. Avatar photo عرفان گفت:

    سلام اگر taskkill را بزنیم و پسوند نزاریم چه اتفاقی می‌افتد؟

  13. Avatar photo محمد گفت:

    سلام، آموزش خیلی خوب و جالبی بود، سپاس 🙏
    من این دستور را داخل شبکه اجرا کردم:
    ۱- بین دو سیستم‌‌ ویندوز ۱۰ ویا دو سیستم ویندوز ۱۱ اجرا میشه مشکلی وجود ندارد.
    ۲- از پشت سیستم ویندوز ۱۱ هم میشه از سیستم‌ ویندوز ۱۰ تسک‌لیست گرفت.
    ۳- اما از پشت سیستم ویندوز ۱۰ نمیشه از سیستم ویندوز ۱۱ تسک‌لیست گرفت ( با اینکه یوزر و پسورد را درست میزنم و فایروال‌ها هم آف هستند و همچنین در regedit مقدار rpc را به ۱ تغییر دادم اما درست نشد). پیغام یوزر و پسورد میدهد:
    Error: The user name or password is incorrect.
    بنظر شما مشکل از کجاست؟!

    • سلام ممنونم از مخبت تون
      تا به حال با چنین مشکلی برخورد نکردم، تجربشو ندارم. تنها یادم میاد سالها قبل RPC رو از طریق Group Policy (اگر اشتباه نکنم) فعال میکردم.
      سیستم عامل ویندوز همینطور که ویژگیهای خوب زیادی داره خطاها باگ های زیادی هم داره، ممکنه همین خطارو در همین شرایط روی دوتا سیستم ویندوز ۱۰ و ۱۱ دیگه دریافت نکنی

  14. Avatar photo محمد گفت:

    احتمالا مثل ریموت دسکتاپ که موقع فعال کردنش اجازه میدیم که قدیمی‌ها هم بتونن ریمون بزنن… این مشکل هم قابل حل شدنه ، باید داخل گروپ پالیسی یا رجیستری این اجازه رو به سیستم بدیم که نسخه‌های قدیمی ویندوز هم بتونن از سیستم با ورژن بالاتر تسک‌لیست بگیرند.
    (درمورد دستور msg هم ویدئو بسازید شاید برای مخاطبان جالب باشه (تو شبکه کاربردی)).

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *