উইন্ডোতে কোনও পোর্ট ব্যবহার করে এমন কোনও প্রক্রিয়ার পিআইডি সন্ধান করুন


107

ক্লাসিকের সাথে শুরুতে আমার পরিষেবা ক্রাশ:

java.rmi.server.ExportException: Listen failed on port: 9999

এটি হত্যার প্রক্রিয়াটি আমি কীভাবে খুঁজে পাব?


আরও জটিল বিকল্প সমাধান এখানে: stackoverflow.com/questions/48198/…
টমাস

উত্তর:


217

কেবল একটি কমান্ড শেল খুলুন এবং টাইপ করুন (আপনার পোর্টটি 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

এখানে আমি কীভাবে কেবল পিড পাব, যেহেতু এটি সম্পূর্ণ বিবরণ দেয়
গোবি এম

উপরের ফলাফলগুলির একমাত্র পিআইডি ফর্ম কীভাবে পাবেন
চিনিয়া

10
বা,nestat -aon | findstr 123456
রোমানিয়া_আজ্ঞানী 14

Windows এ এই অর্জন করা সহজ এই প্রশ্নে দেখিয়েছেন হয় - stackoverflow.com/questions/48198/...
Dracontis

4
উইন্ডোজ / সাইগউইনের জন্য এটি সম্ভবত নেটস্ট্যাট -a -n -o হবে
গ্রেপ

84

উইন্ডোজে কোনও পোর্ট ব্যবহার করে এমন কোনও প্রক্রিয়ার পিআইডি সন্ধান করুন (উদাহরণস্বরূপ পোর্ট: "9999")

netstat -aon | find "9999"

-a সমস্ত সংযোগ এবং শ্রবণ পোর্ট প্রদর্শন করে।

-o প্রতিটি সংযোগের সাথে সম্পর্কিত মালিকানাধীন প্রক্রিয়া আইডি প্রদর্শন করে।

-n সংখ্যাগত আকারে ঠিকানা এবং পোর্ট নম্বর প্রদর্শন করে।

আউটপুট:

TCP    0.0.0.0:9999       0.0.0.0:0       LISTENING       15776

তারপরে পিআইডি দিয়ে প্রক্রিয়াটি মেরে ফেলুন

taskkill /F /PID 15776

/F - প্রক্রিয়াটি জোর করে শেষ করার জন্য নির্দিষ্ট করে (এস)।

দ্রষ্টব্য: কিছু নির্দিষ্ট প্রক্রিয়া মারতে আপনার অতিরিক্ত অনুমতি (প্রশাসকের কাছ থেকে চালানো) প্রয়োজন হতে পারে


আপনি যদি এন পতাকা না দেন তবে কেন নেটট্যাট প্রস্থান করবেন না?
জারেড বিচ

2
@ জারেডবিচ - এটি বিপরীতমুখী ডিএনএস নাম রেজোলিউশনটির জন্য অপেক্ষা করছে, সুতরাং সময়সীমা শেষ হওয়ার পরে শেষ পর্যন্ত এটি শেষ হবে। যদি এটি অভ্যন্তরীণ আইপিগুলিতে ঝুলে থাকে , তবে এটি আপনার স্থানীয় ডিএনএস সার্ভারগুলির সাথে কোনও সমস্যা প্রস্তাব করে।
স্টিভ ফ্রেডল

7

আপনি যদি এই প্রোগ্রামটিমেটিকভাবে করতে চান তবে আপনি পাওয়ারশেল স্ক্রিপ্টের নীচে আপনাকে প্রদত্ত কয়েকটি বিকল্প ব্যবহার করতে পারেন:

$processPID =  $($(netstat -aon | findstr "9999")[0] -split '\s+')[-1]
taskkill /f /pid $processPID

যাহোক; আপনার পিআইডি ফলাফলটি যত বেশি নির্ভুল হতে পারবেন সে বিষয়ে সচেতন থাকুন। আপনি যদি জানেন যে বন্দরটি কোন হোস্টে থাকার কথা, তবে আপনি এটিকে অনেক সংকুচিত করতে পারেন। netstat -aon | findstr "0.0.0.0:9999"কেবলমাত্র একটি অ্যাপ্লিকেশন এবং স্নেহপূর্ণভাবে সঠিকটির জন্য ফিরে আসবে। কেবল পোর্ট নম্বরে অনুসন্ধান করা আপনাকে সেই প্রক্রিয়াগুলি ফিরিয়ে আনতে পারে যা কেবল এর মধ্যেই ঘটে থাকে 9999:

TCP    0.0.0.0:9999                        0.0.0.0:0       LISTENING       15776
UDP    [fe80::81ad:9999:d955:c4ca%2]:1900  *:*                             12331

সম্ভবত সম্ভাব্য প্রার্থী সাধারণত প্রথমে শেষ হয় তবে আপনি যদি স্ক্রিপ্টটি চালানোর আগে প্রক্রিয়াটি শেষ হয়ে যায় তবে আপনি পরিবর্তে পিআইডি 12331 এবং ভুল প্রক্রিয়াটি মেরে ফেলতে পারেন।


4

স্ক্রিপ্ট নিয়ে কিছুটা ঝাঁকুনির পরে আমি এই অ্যাকশনে এসেছি। এটি একটি .bat ফাইলে অনুলিপি করুন এবং সংরক্ষণ করুন:

FOR /F "usebackq tokens=5" %%i IN (`netstat -aon ^| find "3306"`) DO taskkill /F /PID %%i

পোর্ট নম্বরে "3306" "পরিবর্তন করুন যা বিনামূল্যে দরকার। তারপরে প্রশাসক হিসাবে ফাইলটি চালান। এটি এই বন্দরে চলমান সমস্ত প্রক্রিয়া মেরে ফেলবে।


4

COMMAND:

netstat -aon | findstr 4723

আউটপুট:

TCP    0.0.0.0:4723           0.0.0.0:0                LISTENING       10396

এখন forউইন্ডোতে কমান্ডটি ব্যবহার করে প্রসেস আইডি, "10396" কেটে দিন ।

COMMAND:

for /f "tokens=5" %a in ('netstat -aon ^| findstr 4723') do @echo %~nxa

আউটপুট:

10396

আপনি যদি মানটির 4 র্থ সংখ্যাটি কাটাতে চান তবে "LISTENING" এর পরে উইন্ডোতে আদেশ দিন।

COMMAND:

for /f "tokens=4" %a in ('netstat -aon ^| findstr 4723') do @echo %~nxa

আউটপুট:

শোনা


কমান্ড হিসাবে অনন্য পিআইডি ফিল্টার করার জন্য কোনও পরামর্শ কখনও কখনও একই প্রক্রিয়াটিকে একাধিকবার ফেরত দেয়?
Krzysztof Krzeszewski

2

এটি পোর্ট নম্বর ব্যবহার করে পিআইডি খুঁজে পেতে সহায়তা করে।

lsof -i tcp:port_number

1
কমান্ডটি টাইপ করার পরে আমি পেয়েছি'lsof' is not recognized as an internal or external command.
শ্রীনিবাস

লিনাক্সে কাজ করে।
মহাবীর জঙ্গির

3
এই প্রশ্নটি উইন্ডোজ সম্পর্কে
অ্যাকারুচি

0

পাওয়ার শেল (কোর-সামঞ্জস্যপূর্ণ) এক-লাইনার কপিপাস্টের পরিস্থিতিগুলি সহজ করতে:

netstat -aon | Select-String 8080 | ForEach-Object { $_ -replace '\s+', ',' } | ConvertFrom-Csv -Header @('Empty', 'Protocol', 'AddressLocal', 'AddressForeign', 'State', 'PID') | ForEach-Object { $portProcess = Get-Process | Where-Object Id -eq $_.PID; $_ | Add-Member -NotePropertyName 'ProcessName' -NotePropertyValue $portProcess.ProcessName; Write-Output $_ } | Sort-Object ProcessName, State, Protocol, AddressLocal, AddressForeign | Select-Object  ProcessName, State, Protocol, AddressLocal, AddressForeign | Format-Table

আউটপুট:

ProcessName State     Protocol AddressLocal AddressForeign
----------- -----     -------- ------------ --------------
System      LISTENING TCP      [::]:8080    [::]:0
System      LISTENING TCP      0.0.0.0:8080 0.0.0.0:0

একই কোড, বিকাশকারী-বান্ধব:

$Port = 8080

# Get PID's listening to $Port, as PSObject
$PidsAtPortString = netstat -aon `
  | Select-String $Port
$PidsAtPort = $PidsAtPortString `
  | ForEach-Object { `
      $_ -replace '\s+', ',' `
  } `
  | ConvertFrom-Csv -Header @('Empty', 'Protocol', 'AddressLocal', 'AddressForeign', 'State', 'PID')

# Enrich port's list with ProcessName data
$ProcessesAtPort = $PidsAtPort `
  | ForEach-Object { `
    $portProcess = Get-Process `
      | Where-Object Id -eq $_.PID; `
    $_ | Add-Member -NotePropertyName 'ProcessName' -NotePropertyValue $portProcess.ProcessName; `
    Write-Output $_;
  }

# Show output
$ProcessesAtPort `
  | Sort-Object    ProcessName, State, Protocol, AddressLocal, AddressForeign `
  | Select-Object  ProcessName, State, Protocol, AddressLocal, AddressForeign `
  | Format-Table
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.