উইন্ডোজে কী 8080 বন্দরটি সন্ধান করতে পারে এবং এটি একটি .BAT ফাইলের মাধ্যমে ব্যবহার করা প্রক্রিয়াটি মেরে ফেলার চেষ্টা করতে পারে?
উইন্ডোজে কী 8080 বন্দরটি সন্ধান করতে পারে এবং এটি একটি .BAT ফাইলের মাধ্যমে ব্যবহার করা প্রক্রিয়াটি মেরে ফেলার চেষ্টা করতে পারে?
উত্তর:
আপনাকে শুরু করার জন্য এখানে একটি আদেশ রয়েছে:
FOR /F "tokens=4 delims= " %%P IN ('netstat -a -n -o ^| findstr :8080') DO @ECHO TaskKill.exe /PID %%P
আপনি যখন আপনার ব্যাচ ফাইলে আত্মবিশ্বাসী হন, সরিয়ে দিন @ECHO
।
FOR /F "tokens=4 delims= " %%P IN ('netstat -a -n -o ^| findstr :8080') DO TaskKill.exe /PID %%P
নোট করুন যে আপনাকে বিভিন্ন ওএস এর জন্য এটি সামান্য পরিবর্তন করতে হবে। উদাহরণস্বরূপ, উইন্ডোজ 7 এ tokens=5
পরিবর্তে আপনার প্রয়োজন হতে পারে tokens=4
।
এটি কীভাবে কাজ করে
FOR /F ... %variable IN ('command') DO otherCommand %variable...
এটি আপনাকে কার্যকর করতে command
এবং এর আউটপুটটিকে লুপ করতে দেয়। প্রতিটি লাইন স্টাফ করা হবে %variable
এবং আপনি otherCommand
যত খুশি ততবার প্রসারিত করতে পারবেন । %variable
প্রকৃত ব্যবহারের ক্ষেত্রে কেবলমাত্র একটি অক্ষরের নাম থাকতে পারে %V
।
"tokens=4 delims= "
এটি আপনাকে প্রতিটি লাইনকে সাদা স্থানের মাধ্যমে বিভক্ত করতে দেয় এবং সেই লাইনে চতুর্থ অংশ নিতে এবং এটি স্টাফ করে দেয় %variable
(আমাদের ক্ষেত্রে, %%P
)। delims
খালি দেখায়, কিন্তু অতিরিক্ত স্থানটি বাস্তবে তাৎপর্যপূর্ণ।
netstat -a -n -o
শুধু এটি চালান এবং খুঁজে। কমান্ড লাইন সহায়তা অনুসারে, এটি "সমস্ত সংযোগ এবং শ্রবণ পোর্ট প্রদর্শন করে।", "সংখ্যার আকারে ঠিকানা এবং পোর্ট সংখ্যা প্রদর্শন করে" ", এবং" প্রতিটি সংযোগের সাথে যুক্ত নিজস্ব প্রক্রিয়া আইডি প্রদর্শন করে "। অন্য কেউ এটির পরামর্শ দেওয়ার পরে আমি এই বিকল্পগুলি ব্যবহার করেছি এবং এটি কাজ করার জন্য ঘটেছে :)
^|
এটি প্রথম কমান্ড বা প্রোগ্রাম ( netstat
) এর আউটপুট নেয় এবং এটি দ্বিতীয় কমান্ড প্রোগ্রাম ( findstr
) এ প্রেরণ করে । যদি আপনি এটি কমান্ড স্ট্রিংয়ের পরিবর্তে কমান্ড লাইনে সরাসরি ব্যবহার করে থাকেন তবে আপনি |
পরিবর্তে ব্যবহার করতে পারেন ^|
।
findstr :8080
এটি এতে প্রবেশ করা কোনও আউটপুট ফিল্টার করে, কেবল এতে থাকা লাইনগুলিতে ফিরে আসে :8080
।
TaskKill.exe /PID <value>
প্রক্রিয়া আইডি ব্যবহার করে এটি একটি চলমান কাজকে হত্যা করে।
%%P instead of %P
এটি ব্যাচ ফাইলগুলিতে প্রয়োজন। আপনি যদি কমান্ড প্রম্পটে এটি করেন, আপনি %P
পরিবর্তে ব্যবহার করতে পারেন ।
HELP FOR
কমান্ড লাইন অন্যান্য বিকল্পগুলি যে অনেকটা দেখতে FOR
আপনাকে দান করবেন, এবং চেক netstat -?
, findstr /?
এবং, TaskKill /?
আরও বেশি সাহায্যের জন্য।
tokens=4
আমি মনে করি উইন্ডোজ এক্সপি এবং tokens=5
উইন্ডোজ 7.. /F
হত্যার জন্য জোর করার জন্য একটি ভাল ধারণা ।
কমান্ড প্রম্পট ওপেন করুন এবং নিম্নলিখিত কমান্ডগুলি চালান
C:\Users\username>netstat -o -n -a | findstr 0.0:3000
TCP 0.0.0.0:3000 0.0.0.0:0 LISTENING 3116
C:\Users\username>taskkill /F /PID 3116
, এখানে 3116 প্রক্রিয়া আইডি
কমান্ড লাইনের নিচে ব্যবহার কমান্ডের নির্দিষ্ট প্রক্রিয়া সন্ধান করতে এখানে 8080 প্রক্রিয়া দ্বারা ব্যবহৃত পোর্ট
netstat -ano | findstr 8080
21424 কমান্ডের নীচে ব্যবহারের প্রক্রিয়াটি হ'ল প্রক্রিয়া আইডি
taskkill /pid 21424 /F
মার্লিনের সমাধান ব্যবহারের ফলে অন্যান্য অ্যাপ্লিকেশনগুলিকে ফায়ার ফক্সের মতো হত্যা করা হয়েছিল। এই প্রক্রিয়াগুলি একই বন্দর ব্যবহার করছিল, তবে শ্রোতারূপে নয়:
উদাহরণ:
netstat -a -n -o | findstr :8085
TCP 0.0.0.0:8085 0.0.0.0:0 LISTENING 6568
TCP 127.0.0.1:49616 127.0.0.1:8085 TIME_WAIT 0
TCP 127.0.0.1:49618 127.0.0.1:8085 TIME_WAIT 0
অতএব, অনুসন্ধানকারীগুলিতে "LISTENING" যুক্ত করে এগুলি বাদ দিতে পারেন:
FOR /F "tokens=5 delims= " %%P IN ('netstat -a -n -o ^| findstr :8085.*LISTENING') DO TaskKill.exe /PID %%P
8080 পোর্টে চলমান সমস্ত প্রক্রিয়াটি তালিকাবদ্ধ করতে নিম্নলিখিত করুন।
netstat -ano | "8080" সন্ধান করুন
TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 10612
TCP [::]:8080 [::]:0 LISTENING 10612
তারপরে প্রক্রিয়াটি হ্রাস করতে নিম্নলিখিত কমান্ডটি চালান run
টাস্কিল / এফ / পিআইডি 10612
আপনাকে ধন্যবাদ, কেবল যোগ করার জন্য যে কোনও প্রক্রিয়া বন্ধ হবে না যতক্ষণ না / এফ ফোর্স সুইচটি টাস্ককিলের সাথে প্রেরণ করা না হয়। / টি স্যুইচ সহ, প্রক্রিয়াটির সমস্ত গৌণ থ্রেড বন্ধ হয়ে যাবে।
C:\>FOR /F "tokens=5 delims= " %P IN ('netstat -a -n -o ^| findstr :2002') DO TaskKill.exe /PID %P /T /F
পরিষেবার জন্য পরিষেবাটির নাম পাওয়া এবং সম্পাদন করা প্রয়োজন:
সার্ভিস নাম বন্ধ করুন
কেবলমাত্র সমাপ্তির জন্য:
আমি একটি নির্দিষ্ট বন্দরে সংযুক্ত সমস্ত প্রক্রিয়া মেরে ফেলতে চেয়েছিলাম তবে প্রক্রিয়া শ্রবণ নয়
9001 বন্দরটির জন্য কমান্ডটি (সেন্টিমিডি শেলের মধ্যে) হ'ল:
FOR /F "tokens=5 delims= " %P IN ('netstat -ano ^| findstr -rc:":9001[ ]*ESTA"') DO TaskKill /F /PID %P
সন্ধানকারী :
নেটস্ট্যাট :
এটি কাজ করে কারণ নেটস্যাটটি সোর্স পোর্টটি তারপরে গন্তব্য পোর্ট এবং তারপরে ESTABLISHED মুদ্রণ করে
নীচের বিষয়বস্তু সহ একটি ব্যাট ফাইল তৈরি করেছেন, এটি পোর্ট সংখ্যার জন্য ইনপুট গ্রহণ করে
@ECHO ON
set /p portid=Enter the Port to be killed:
echo %portid%
FOR /F "tokens=5" %%T IN ('netstat -a -n -o ^| findstr %portid% ') DO (
SET /A ProcessId=%%T) &GOTO SkipLine
:SkipLine
echo ProcessId to kill = %ProcessId%
taskkill /f /pid %ProcessId%
PAUSE
অবশেষে প্রস্থান করতে "এন্টার" ক্লিক করুন।
আপনি যদি 8080 বন্দর শোনার প্রক্রিয়াটি হারাতে চান তবে আপনি পাওয়ারশেল ব্যবহার করতে পারেন। শুধু সাথে Get-NetTCPConnection
cmdlet একত্রিত করুন Stop-Process
।
উইন্ডোজ 10 বা উইন্ডোজ সার্ভার 2016 এর পাওয়ারশেল 5 এর সাথে পরীক্ষিত হয়ে কাজ করা উচিত However তবে আমার ধারণা, এটি পাওয়ারশেল 5 ইনস্টল থাকা পুরানো উইন্ডোজ সংস্করণগুলিতেও কাজ করা উচিত।
এখানে একটি উদাহরণ:
PS C:\> Stop-Process -Id (Get-NetTCPConnection -LocalPort 8080).OwningProcess
Confirm
Are you sure you want to perform the Stop-Process operation on the following item: MyTestServer(9408)?
[Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "Y"):
মার্লিনের প্রতিক্রিয়াটির অনুরূপ, তবে এটি এই ক্ষেত্রেগুলিও পরিচালনা করে:
এটা এখানে:
set serverPid=
for /F "tokens=5 delims= " %%P in ('netstat -a -n -o ^| findstr /E :8080 ') do set serverPid=%%P
if not "%serverPid%" == "" (
taskkill /PID %serverPid%
) else (
rem echo Server is not running.
)
পদক্ষেপ:
conf
আপনার অ্যাপাচি টমক্যাট সার্ভারের ফোল্ডারে যান । আমার ক্ষেত্রে, এটি apache-tomcat-7.0.61\conf
যেমন আমি অ্যাপাচি-টমক্যাট -7.0.61 ব্যবহার করছি
server.xml
আপনার ইচ্ছানুসারে 8080 থেকে অন্য কোনও বন্দরে পোর্ট নম্বরটি খুলুন এবং পরিবর্তন করুন। উদাহরণস্বরূপ: 8081,8082,8087 ইত্যাদি
এখন bin
ফোল্ডারে যান এবং চালানshutdown.bat
এবার গ্রহনের মাধ্যমে সার্ভারটি পুনরায় চালু করুন।
এখন আপনার প্রকল্পটি কোনও বাধা ছাড়াই কাজ করবে।
যদি কেউ পাওয়ারশেল স্ক্রিপ্ট খুঁজছেন:
function Search-And-Destroy
{
param ( [Parameter(Mandatory=$true)][string]$port )
$lines = netstat -a -o -n | findstr $port
$ports = @()
ForEach($line In $lines)
{
$res = $($lines -split '\s+')
$ports += $res[5]
}
$ports = $ports | select -uniq
ForEach($port In $ports)
{
echo $(taskkill /F /PID $port)
}
}
এই ফাংশনটি মূলত উপরের ফাংশনগুলি যা করে তা করে তবে এটি পাওয়ারশেল স্ক্রিপ্টিং ফর্ম্যাটে রয়েছে যাতে আপনি এটি আপনার পাওয়ারশেল প্রোফাইলে যুক্ত করতে পারেন। আপনার প্রোফাইলের অবস্থান অনুসন্ধান করতে পাওয়ারশেল এ গিয়ে টাইপ করুনecho $profile
netstat
সরঞ্জামের চারপাশে একটি পাওয়ারশেল-ভিত্তিক মোড়ক রয়েছে ।
কমান্ড লাইনে এটি আটকান
FOR /F "tokens=5 delims= " %P IN ('netstat -ano ^| find "LISTENING" ^| find ":8080 "') DO (TASKKILL /PID %P)
আপনি যদি এটির %%P
পরিবর্তে কোনও ব্যাচের পুতে এটি ব্যবহার করতে চান%P
netstat
সরঞ্জামটি অন্য ভাষায় অনুবাদ করা হয়েছে
যদি আপনি সিস্টেম দ্বারা এটি কাজ শেষ করতে পারবেন না। এই আদেশ ব্যবহার করে দেখুন
x:> নেট স্টপ http / y