كيف يمكنك معرفة العملية التي يتم الاستماع إليها على منفذ على نظام التشغيل Windows؟

StackOverflow https://stackoverflow.com/questions/48198

  •  09-06-2019
  •  | 
  •  

سؤال

كيف يمكنك معرفة العملية التي يتم الاستماع إليها على منفذ على نظام التشغيل Windows؟

هل كانت مفيدة؟

المحلول

بوويرشيل

Get-Process -Id (Get-NetTCPConnection -LocalPort portNumber).OwningProcess

كمد

 C:\> netstat -a -b

(يضيف لمنعه من محاولة حل أسماء المضيفين، مما سيجعل الأمر أسرع كثيرًا.)

لاحظ توصية داين بشأن TCPView.يبدو مفيدا جدا!

يعرض كافة الاتصالات ومنافذ الاستماع.

يعرض الملف القابل للتنفيذ المتضمن في إنشاء كل اتصال أو منفذ استماع.في بعض الحالات، تستضيف الملفات التنفيذية المعروفة عدة مكونات مستقلة، وفي هذه الحالات يتم عرض تسلسل المكونات المشاركة في إنشاء الاتصال أو منفذ الاستماع.في هذه الحالة، يكون الاسم القابل للتنفيذ موجودًا في [] بالأسفل، وفي الأعلى يوجد المكون الذي يطلق عليه، وهكذا حتى يتم الوصول إلى TCP/IP.لاحظ أن هذا الخيار قد يستغرق وقتًا طويلاً وسيفشل ما لم يكن لديك أذونات كافية.

يعرض العناوين وأرقام المنافذ بشكل رقمي.

يعرض معرف عملية المالك المرتبط بكل اتصال.

نصائح أخرى

هناك واجهة مستخدم رسومية أصلية لنظام التشغيل Windows:

  • ابدأ >>كافة البرامج >>البرامج الملحقة >>أدوات النظام >>مراقبة الموارد

أو يجري resmon.exe, ، او من مدير المهام علامة التبويب الأداء

enter image description here

يستخدم TCPView إذا كنت تريد واجهة المستخدم الرسومية لهذا الغرض.إنه تطبيق Sysinternals القديم الذي اشترته Microsoft.

netstat -aon | find /i "listening"

يتطلب رمز التبديل -b المذكور في معظم الإجابات أن يكون لديك امتيازات إدارية على الجهاز.لا تحتاج حقًا إلى حقوق مرتفعة للحصول على اسم العملية!

ابحث عن معرف العملية الجاري تشغيلها في رقم المنفذ (على سبيل المثال، 8080)

netstat -ano | findStr "8080"

ابحث عن اسم العملية بواسطة pid

tasklist /fi "pid eq 2216"

find process by TCP/IP port

يمكنك الحصول على مزيد من المعلومات إذا قمت بتشغيل الأمر التالي:

netstat -aon |find /i "listening" |find "port"

يتيح لك استخدام الأمر "بحث" تصفية النتائج.البحث عن /i "الاستماع" سيعرض فقط المنافذ "الاستماع".لاحظ أنك تحتاج إلى /i لتجاهل الحالة وإلا فسوف تكتب "الاستماع".|find "port" سيقصر النتائج على تلك التي تحتوي على رقم المنفذ المحدد فقط.لاحظ أنه سيتم أيضًا تصفية النتائج التي تحتوي على رقم المنفذ في أي مكان في سلسلة الاستجابة.

  1. افتح نافذة موجه الأوامر (كمسؤول) من "مربع Start\Search" أدخل "cmd" ثم انقر بزر الماوس الأيمن على "cmd.exe" وحدد "Run as Administrator"

  2. أدخل النص التالي ثم اضغط على Enter.

    netstat -abno

    يعرض كافة الاتصالات ومنافذ الاستماع.

    يعرض القابل للتنفيذ المشارك في إنشاء كل اتصال أو منفذ استماع.في بعض الحالات ، تستضيف التنفيذيون المعروفين مكونات مستقلة متعددة ، وفي هذه الحالات يتم عرض تسلسل المكونات المشاركة في إنشاء اتصال أو منفذ الاستماع.في هذه الحالة ، يكون الاسم القابل للتنفيذ في [] في الأسفل ، في الأعلى هو المكون الذي أطلق عليه ، وهكذا يتم الوصول إلى TCP/IP.لاحظ أن هذا الخيار يمكن أن يستغرق وقتًا طويلاً وسيخفق ما لم يكن لديك أذونات كافية.

    يعرض العناوين وأرقام المنافذ بشكل رقمي.

    يعرض معرف عملية المالك المرتبط بكل اتصال.

  3. ابحث عن المنفذ الذي تستمع إليه ضمن "العنوان المحلي"

  4. انظر إلى اسم العملية مباشرة تحت ذلك.

ملحوظة:للعثور على العملية ضمن إدارة المهام

  1. لاحظ PID (معرف العملية) بجوار المنفذ الذي تبحث عنه.

  2. افتح إدارة مهام ويندوز.

  3. حدد علامة التبويب العمليات.

  4. ابحث عن معرف المنتج (PID) الذي قمت بتدوينه عند قيامك بإجراء netstat في الخطوة 1.

    • إذا كنت لا ترى عمود PID، فانقر على عرض / تحديد الأعمدة.حدد معرف المنتج.

    • تأكد من تحديد "إظهار العمليات من كافة المستخدمين".

احصل على PID واسم الصورة

استخدم أمرًا واحدًا فقط:

for /f "tokens=5" %a in ('netstat -aon ^| findstr 9000') do tasklist /FI "PID eq %a"

أين 9000 يجب استبداله برقم المنفذ الخاص بك.

ال انتاج سوف تحتوي على شيء مثل هذا:

Image Name                     PID Session Name        Session#    Mem Usage
========================= ======== ================ =========== ============
java.exe                      5312 Services                   0    130,768 K

توضيح:

  • يتكرر خلال كل سطر من إخراج الأمر التالي:

    netstat -aon | findstr 9000
    
  • من كل سطر، PID (%a - الاسم غير مهم هنا) يتم استخراجه (PID هو 5ذ عنصر في هذا السطر) وتمريره إلى الأمر التالي

    tasklist /FI "PID eq 5312"
    

أذا أردت يتخطى ال header وعودة موجه الأمر, ، يمكنك استخدام:

echo off & (for /f "tokens=5" %a in ('netstat -aon ^| findstr 9000') do tasklist /NH /FI "PID eq %a") & echo on

انتاج:

java.exe                      5312 Services                   0    130,768 K

أولاً نجد معرف العملية لتلك المهمة المحددة التي نحتاج إلى إزالتها للحصول على منفذ مجاني

يكتب
نتستت -n -a -o

بعد تنفيذ هذا الأمر في موجه سطر أوامر Windows (CMD) ، حدد PID الذي أعتقد أن العمود الأخير يفترض أن هذا هو 3312

الآن اكتب

Taskkill /F /PID 3312

يمكنك الآن التحقق من خلال كتابة الأمر netstat.

ملحوظة:في بعض الأحيان ، لا يسمح لك Windows بتشغيل هذا الأمر مباشرةً على CMD ، لذا عليك أولاً الذهاب مع خطوات Start-> أوامر (انقر بزر الماوس الأيمن على موجه الأوامر ، وتشغيله كمسؤول)

من السهل جدًا الحصول على رقم المنفذ من معرف الهوية في Windows.

وفيما يلي الخطوات:

1) اذهب إلى التشغيل -> اكتب cmd -> اضغط على زر الإدخال.

2) اكتب الأمر التالي ...

netstat -aon | findstr [port number]

(ملحوظة:لا تقم بتضمين الأقواس المربعة.)

3) اضغط على زر الإدخال...

4) بعد ذلك سيعطيك cmd تفاصيل الخدمة التي تعمل على هذا المنفذ بالإضافة إلى معرف الهوية.

5) افتح مدير المهام واضغط على علامة تبويب الخدمة وقم بمطابقة معرف التعريف مع معرف cmd وهذا كل شيء.

للحصول على قائمة بجميع معرفات عملية الملكية المرتبطة بكل اتصال:

netstat -ao |find /i "listening"

إذا كنت تريد إنهاء أي عملية، فاحصل على المعرف واستخدم هذا الأمر، حتى يصبح هذا المنفذ مجانيًا

Taskkill /F /IM pidof a process

فقط افتح واجهة الأوامر واكتب:(قول المنفذ الخاص بك هو 123456)

netstat -a -n -o | find "123456"

سوف ترى كل ما تحتاجه

الرؤوس هي:

 Proto  Local Address          Foreign Address        State           PID
 TCP    0.0.0.0:37             0.0.0.0:0              LISTENING       1111

هذا كما ذكر هنا

إذا كنت ترغب في استخدام أداة واجهة المستخدم الرسومية للقيام بذلك، فهناك سيسي إنترنالز TCPView.

باستخدام PowerShell 5 على نظام التشغيل Windows 10 أو Windows Server 2016، قم بتشغيل Get-NetTCPConnection cmdlet.أعتقد أنه يجب أن يعمل أيضًا على إصدارات Windows الأقدم.

الإخراج الافتراضي ل Get-NetTCPConnection لا يتضمن معرف العملية لسبب ما وهو مربك بعض الشيء.ومع ذلك، يمكنك دائمًا الحصول عليه عن طريق تنسيق الإخراج.العقار الذي تبحث عنه هو OwningProcess.

  • إذا كنت تريد معرفة معرف العملية التي تستمع على المنفذ 443، فقم بتشغيل هذا الأمر:

    PS C:\> Get-NetTCPConnection -LocalPort 443 | Format-List
    
    LocalAddress   : ::
    LocalPort      : 443
    RemoteAddress  : ::
    RemotePort     : 0
    State          : Listen
    AppliedSetting :
    OwningProcess  : 4572
    CreationTime   : 02.11.2016 21:55:43
    OffloadState   : InHost
    
  • قم بتنسيق الإخراج إلى جدول بالخصائص التي تبحث عنها:

    PS C:\> Get-NetTCPConnection -LocalPort 443 | Format-Table -Property LocalAddress, LocalPort, State, OwningProcess
    
    LocalAddress LocalPort  State OwningProcess
    ------------ ---------  ----- -------------
    ::                 443 Listen          4572
    0.0.0.0            443 Listen          4572
    
  • إذا كنت تريد معرفة اسم العملية، قم بتشغيل هذا الأمر:

    PS C:\> Get-Process -Id (Get-NetTCPConnection -LocalPort 443).OwningProcess
    
    Handles  NPM(K)    PM(K)      WS(K)     CPU(s)     Id  SI ProcessName
    -------  ------    -----      -----     ------     --  -- -----------
    143      15     3448      11024              4572   0 VisualSVNServer
    

لمعرفة العملية المحددة (PID) التي تستخدم أي منفذ:

netstat -anon | findstr 1234

حيث 1234 هو PID للعملية الخاصة بك.[انتقل إلى إدارة المهام -> علامة التبويب الخدمات/العمليات لمعرفة معرف المنتج (PID) لتطبيقك]

netstat -ao و netstat -ab أخبرك بالتطبيق، ولكن إذا لم تكن مسؤولاً، فسوف تحصل على "العملية المطلوبة تتطلب الترقية".

إنه ليس مثاليًا، ولكن إذا كنت تستخدم sysinternals Process Explorer، فيمكنك الانتقال إلى خصائص عمليات معينة وإلقاء نظرة على علامة التبويب TCP لمعرفة ما إذا كانوا يستخدمون المنفذ الذي تهتم به.قطعة من الإبرة وكومة قش، لكن ربما ستساعد شخصًا ما....

اكتب الأمر: netstat -aon | findstr :DESIRED_PORT_NUMBER

على سبيل المثال، إذا أردت العثور على المنفذ 80: netstat -aon | findstr :80

تم نشر هذه الإجابة في الأصل في هذا الموضوع.

أوصي كوربورتس من نيرسوفت.

يمكن لـ CurrPorts تصفية النتائج المعروضة. TCPView لا يملك هذه الميزة.

ملحوظة:يمكنك النقر بزر الماوس الأيمن فوق اتصال مأخذ التوصيل الخاص بالعملية وتحديد "إغلاق اتصالات TCP المحددة" (يمكنك أيضًا القيام بذلك في TCPView).يؤدي هذا غالبًا إلى إصلاح مشكلات الاتصال التي أواجهها مع Outlook وLync بعد تبديل شبكات VPN.باستخدام CurrPorts، يمكنك أيضًا إغلاق الاتصالات من سطر الأوامر باستخدام المعلمة "/ Close".

نتستات

  • -a يعرض كافة منافذ الاتصال والاستماع
  • -b يعرض الملفات التنفيذية
  • -n توقف عن حل أسماء المضيفين (نموذج رقمي)
  • - عملية التملك

    Netstat -bano | Findstrst "7002"

    netstat -ano > ano.txt

كوربورتس أداة تساعد على البحث والتصفية

اتبع هذه الأدوات:- من كمد :- C:\> netstat -anob مع مدير امتياز.

http://technet.microsoft.com/en-us/sysinternals/bb896653 - عملية المستكشف

http://technet.microsoft.com/en-us/sysinternals/bb896645 - تفريغ العملية

http://technet.microsoft.com/en-us/sysinternals/bb896644 - مراقب المنفذ

كل ذلك من sysinternals.com

إذا كنت تريد فقط معرفة العملية الجارية والخيوط ضمن كل عملية، فإنني أوصي بالتعرف على المزيد wmic.أداة خط cmd رائعة، والتي تمنحك أكثر بكثير مما يمكنك معرفته.

مثال :-

c:\> wmic process list brief /every:5

سيُظهر الأمر أعلاه قائمة العمليات بالكامل باختصار كل 5 ثوانٍ.لمعرفة المزيد، يمكنك فقط الذهاب مع /? أمر النوافذ، على سبيل المثال،

c:\>wmic /?
c:\>wmic process /?
c:\>wmic prcess list /?

وهلم جرا وهكذا دواليك.:)

NetStat -a -o هذا يوضح pid من العملية التي تعمل على منفذ معين.

ضع في اعتبارك معرف العملية وانتقل إلى مدير المهام وعلامة التبويب الخدمات أو التفاصيل وقم بإنهاء العملية التي لها نفس معرف المنتج.

وبالتالي يمكنك قتل العملية التي تعمل على منفذ معين في النوافذ.

بالنسبة لأولئك الذين يستخدمون Powershell، حاول Get-NetworkStatistics:

> Get-NetworkStatistics | where Localport -eq 8000


ComputerName  : DESKTOP-JL59SC6
Protocol      : TCP
LocalAddress  : 0.0.0.0
LocalPort     : 8000
RemoteAddress : 0.0.0.0
RemotePort    : 0
State         : LISTENING
ProcessName   : node
PID           : 11552

باستخدام بوويرشيل...
...سيكون هذا صديقك (استبدل 8080 برقم المنفذ الخاص بك):

 netstat -abno | Select-String -Context 0,1 -Pattern 8080

إخراج العينة

>   TCP    0.0.0.0:8080           0.0.0.0:0              LISTENING         2920
   [tnslsnr.exe]
>   TCP    [::]:8080              [::]:0                 LISTENING         2920
   [tnslsnr.exe]

لذلك في هذا المثال، يتم الاستماع إلى tnslsnr.exe (قاعدة بيانات OracleXE) على المنفذ 8080.

شرح سريع
Select-String يستخدم لتصفية الإخراج المطول لـ netstat للخطوط ذات الصلة.
-Pattern يختبر كل سطر مقابل تعبير عادي.
-Context 0,1 سيتم إخراج 0 خطوط بادئة وخط خلفي واحد لكل مطابقة للنمط.

برمجياً، أنت بحاجة إلى أشياء من iphlpapi.h, ، على سبيل المثال GetTcpTable2().الهياكل مثل MIB_TCP6ROW2 تحتوي على PID للمالك.

الحل الذي يساعدني على سطر واحد هو هذا الحل، فقط استبدل 3000 بالمنفذ الخاص بك

$P = Get-Process -Id (Get-NetTCPConnection -LocalPort 3000).OwningProcess; kill $P.Id

  1. افتح ال command prompt - start » run » cmd or start » All Programs » Accessories » Command Prompt.

  2. يكتب

    netstat -aon | findstr '[port_number]'

استبدل [port_number] برقم المنفذ الفعلي الذي تريد التحقق منه ثم اضغط على زر الإدخال.

  1. إذا تم استخدام المنفذ من قبل أي تطبيق، فسيتم عرض تفاصيل هذا التطبيق.الرقم الذي يظهر في العمود الأخير من القائمة هو PID (معرف العملية) لهذا التطبيق.دوّن هذا.
  2. يكتب

    tasklist | findstr '[PID]'

استبدل [PID] بالرقم من الخطوة أعلاه واضغط على زر الإدخال.

  1. سيظهر لك اسم التطبيق الذي يستخدم رقم المنفذ الخاص بك.

بالنسبة لنظام التشغيل Windows، إذا كنت تريد العثور على أشياء يتم الاستماع إليها أو توصيلها بالمنفذ 1234، فقم بتنفيذ ما يلي في موجه cmd:

netstat -na | find "1234"

استخدم البرنامج النصي الدفعي أدناه والذي يأخذ اسم العملية كوسيطة ويعطي مخرجات netstat للعملية.

@echo off
set procName=%1
for /f "tokens=2 delims=," %%F in ('tasklist /nh /fi "imagename eq %1" /fo csv') do call :Foo %%~F
goto End

:Foo
set z=%1
echo netstat for : "%procName%" which had pid "%1"
echo ----------------------------------------------------------------------

netstat -ano |findstr %z%
goto :eof

:End
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top