विंडोज में पोर्ट 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
ध्यान दें कि आपको अलग-अलग OS के लिए इसे थोड़ा बदलना पड़ सकता है। उदाहरण के लिए, विंडोज 7 पर आपको आवश्यकता हो सकती हैtokens=5
इसके बजाय है tokens=4
।
यह कैसे काम करता है
FOR /F ... %variable IN ('command') DO otherCommand %variable...
यह आपको command
आउटपुट पर निष्पादित और लूप करने देता है । प्रत्येक पंक्ति में भरवां जाएगा %variable
, और otherCommand
आप जहां चाहें, जितनी बार चाहें उतनी बार विस्तार कर सकते हैं। %variable
वास्तविक उपयोग में केवल एक अक्षर का नाम हो सकता है, जैसे %V
।
"tokens=4 delims= "
इससे आप व्हॉट्सएप द्वारा प्रत्येक लाइन को विभाजित कर सकते हैं, और उस लाइन में 4 वां हिस्सा ले सकते हैं, और इसे %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
इसलिए, निम्नानुसार "लिस्टेनिंग" जोड़कर इन्हें बाहर रखा जा सकता है:
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
फिर प्रक्रिया को मारने के लिए निम्नलिखित कमांड चलाएँ
टास्ककिल / एफ / पीआईडी 10612
आप सभी को धन्यवाद, बस यह जोड़ने के लिए कि कुछ प्रक्रिया तब तक बंद नहीं होगी जब तक टास्ककिल के साथ / एफ बल स्विच भी नहीं भेजा जाता है। इसके अलावा / टी स्विच के साथ, प्रक्रिया के सभी माध्यमिक धागे बंद हो जाएंगे।
C:\>FOR /F "tokens=5 delims= " %P IN ('netstat -a -n -o ^| findstr :2002') DO TaskKill.exe /PID %P /T /F
सेवाओं के लिए सेवा का नाम प्राप्त करना और निष्पादित करना आवश्यक होगा:
sc stop सेवानाम
बस पूरा करने के लिए:
मैं एक विशिष्ट पोर्ट से जुड़ी सभी प्रक्रियाओं को मारना चाहता था, लेकिन सुनने की प्रक्रिया नहीं
पोर्ट 9001 के लिए कमांड (cmd शेल में) है:
FOR /F "tokens=5 delims= " %P IN ('netstat -ano ^| findstr -rc:":9001[ ]*ESTA"') DO TaskKill /F /PID %P
खोज :
नेटस्टैट :
यह काम करता है क्योंकि netstat स्रोत पोर्ट को फिर गंतव्य पोर्ट को प्रिंट करता है और फिर 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 पर सुनने वाली प्रक्रिया को मारना चाहते हैं, तो आप PowerShell का उपयोग कर सकते हैं। बस के साथ Get-NetTCPConnection
cmdlet गठबंधनStop-Process
।
परीक्षण किया और PowerShell 5 के साथ विंडोज 10 या विंडोज सर्वर 2016 पर काम करना चाहिए। हालांकि, मुझे लगता है कि इसे पुराने विंडोज संस्करणों पर भी काम करना चाहिए जिसमें पावरशेल 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 सर्वर के फोल्डर पर जाएं । मेरे मामले में, इसका apache-tomcat-7.0.61\conf
उपयोग मैं Apache-tomcat-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