Windowsであるポート番号をListenしてるプロセスが何か知る方法
Windows(サーバー)で、あるポート番号を誰がListenしてるかを知る方法です。
対話式でやる方法
1回目のコマンド
netstat -ano | findstr ":443" | findstr "LISTENING"
これでプロセスID(PID)が判明する
実行結果
TCP 0.0.0.0:443 0.0.0.0:0 LISTENING 20220
TCP [::]:443 [::]:0 LISTENING 20220
2回目のコマンド
tasklist /fi "PID eq 20220"
実行結果
イメージ名 PID セッション名 セッション# メモリ使用量
========================= ======== ================ =========== ============
node.exe 20220 RDP-Tcp#0 1 122,148 K
PS C:\Users\ml>
これでこのプロセスが誰かが判明する
一発で知る方法
以下をPowerShell にペタっとはると、
誰が指定のポート番号をListenしてるかPIDとその正体もわかります。
# Windows PowerShell用スクリプト
# あるポート番号を Listen しているプロセスが何か表示する
# ポート番号を指定(必要に応じて変更)
$port = 443
# 指定したポートをリッスンしているプロセスを検索
$connections = netstat -ano | Select-String ":$port\s+.*LISTENING"
if (-not $connections) {
Write-Host "ポート $port をリッスンしているプロセスはありません"
exit
}
# 接続情報を表示
Write-Host "接続情報:"
$connections
# ユニークなプロセスIDを抽出して重複を排除
$processIds = @{}
$connections | ForEach-Object {
$processId = $_.ToString().Trim() -replace '.*LISTENING\s+(\d+)', '$1'
$processIds[$processId] = $true
}
# プロセス情報を表示(重複なし)
Write-Host "`nプロセス情報:"
$processIds.Keys | ForEach-Object {
Get-Process -Id $_ | Select-Object Id, ProcessName, Path
Write-Host "プロセスを停止するには: taskkill /PID $_ /F" -ForegroundColor Yellow
}
実行結果
プロセスを停止するには: taskkill /PID 20220 /F
Id ProcessName Path
-- ----------- ----
20220 node C:\Program Files\nodejs\node.exe
PIDとプロセス名、そのプロセスの停止方法のヒントつきで表示されます
それでは、良きプロセス管理ライフを!