回答:
ステップ1:
cmd.exeを開き(注:管理者として実行する必要がある場合がありますが、これは必ずしも必要ではありません)、次のコマンドを実行します。
netstat -ano | findstr :PORT_NUMBER
(PORT_NUMBERを必要なポート番号に置き換えますが、コロンはそのままにします)
赤い丸で囲まれた領域は、PID(プロセス識別子)を示します。必要なポートを使用しているプロセスのPIDを見つけます。
ステップ2:
次に、次のコマンドを実行します。
taskkill /PID PID /F
(今回はコロンなし)
最後に、「ステップ1」のコマンドを再実行して、操作が成功したかどうかを確認できます。成功した場合、そのポート番号の検索結果は表示されません。
taskkill //PID 12552 //F
taskkill /PID PORT_NUMBER /F
ステップ1(同じことがKavinduWijeによって書かれた承認された回答にあります):
netstat -ano | findstr :yourPortNumber
ステップ2の変更:
tskill typeyourPIDhere
注:taskkill
一部のgit bashターミナルでは機能しません
Windows 10のデフォルトツール:
管理者としてWindows PowerShellを開きます
ポート8080のPID(ProcessID)を見つけます。
netstat -aon | findstr 8080
TCP 0.0.0.0:8080 0.0.0.0:0リッスン77777
ゾンビプロセスを終了します。
taskkill /f /pid 77777
ここで、「77777」はあなたのPIDです
set /p port="Enter port: "
>入力ポート FOR /F "tokens=5" %%T IN ('netstat -aon ^| findstr %port% ') DO ( SET /A ProcessId=%%T) &GOTO SkipLine
:SkipLine
-> PIDを変数に抽出しますtaskkill /f /pid %ProcessId%
->タスクを強制終了 します -> cmd /k
ウィンドウを開いたままにします
GitBashを使用している場合
第一歩:
netstat -ano | findstr :8080
ステップ2:
taskkill /PID typeyourPIDhere /F
(/F
プロセスを強制終了します)
Windows PowerShellのバージョン1以降のポート3000種類のプロセスを停止するには:
Stop-Process(、(netstat -ano | findstr:3000).split()| foreach {$ [$ .length-1]})-Force
@morganpdxで提案されているように、PowerShell風の、より良いバージョンです:
Stop-Process -Id(Get-NetTCPConnection -LocalPort 3000).OwningProcess -Force
'Stop-Process' is not recognized as an internal or external command,
Stop-Process -Id (Get-NetTCPConnection -LocalPort 3000).OwningProcess -Force
コマンドラインで使用する場合:
for /f "tokens=5" %a in ('netstat -aon ^| find ":8080" ^| find "LISTENING"') do taskkill /f /pid %a
batファイルで使用する場合:
for /f "tokens=5" %%a in ('netstat -aon ^| find ":8080" ^| find "LISTENING"') do taskkill /f /pid %%a
すでにポート番号がわかっている場合は、ソフトウェア終了シグナルをプロセス(SIGTERM)に送信するだけで十分でしょう。
kill $(lsof -t -i :PORT_NUMBER)
lsof -nt -i4TCP:9001
同様に実行できます。
私はWindowsでzookeeperを実行していて、zookeeper-stop.shを使用して2181ポートで実行しているZooKeeperを停止できなかったため、この2つのスラッシュ「//」メソッドをtaskkillに試しました。動いた
1. netstat -ano | findstr :2181
TCP 0.0.0.0:2181 0.0.0.0:0 LISTENING 8876
TCP [::]:2181 [::]:0 LISTENING 8876
2.taskkill //PID 8876 //F
SUCCESS: The process with PID 8876 has been terminated.
Windowsターミナルを使用している場合、強制終了プロセスは少し面倒ではありません。kill PID
新しいWindowsターミナルが特定のbashコマンドをサポートしているので、私はWindowsターミナルを使用していて、ポートのプロセスを強制終了するのにうまくいきます。例えば:kill 13300
したがって、プロセス全体は次のようになります。
netstat -ano | findstr :PORT
kill PID
例えば:
PS C:\Users\username> netstat -ano | findstr :4445
TCP 0.0.0.0:4445 0.0.0.0:0 LISTENING 7368
TCP [::]:4445 [::]:0 LISTENING 7368
PS C:\Users\username> kill 7368
PS C:\Users\username> netstat -ano | findstr :4445
PS C:\Users\username>
最初のコマンドを入力して、それが空を返したポート上のプロセスを一覧表示したときに表示されます。つまり、現在すべてのプロセスが強制終了されています。
kill
です。見つけたらここに投稿します。
Pythonを使用して実行する場合:特定のポート(たとえば8080)でリッスンしているプロセスをPythonで強制終了することはできますか?
Smunkからの答えはうまくいきます。ここで彼のコードを繰り返します。
from psutil import process_iter
from signal import SIGTERM # or SIGKILL
for proc in process_iter():
for conns in proc.connections(kind='inet'):
if conns.laddr.port == 8080:
proc.send_signal(SIGTERM) # or SIGKILL
continue
GitBashを使用した1行のソリューション:
tskill `netstat -ano | grep LISTENING | findstr :8080 | sed -r 's/(\s+[^\s]+){4}(.*)/\1/'`
8080をサーバーがリッスンしているポートに置き換えます。
頻繁に使用する必要がある場合は~/.bashrc
、関数に追加してみてください。
function killport() {
tskill `netstat -ano | findstr LISTENING | findstr :$1 | sed -r 's/^(\s+[^\s]+){4}(\d*)$/\1/'`
}
そして単に実行する
killport 8080
以下のコマンドを使用してIISを再起動するだけでこれを回避できます。
IISRESET