Windowsであるポート番号をListenしてるプロセスが何か知る方法

Windowsであるポート番号をListenしてるプロセスが何か知る方法
Photo by Sigmund / Unsplash

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とプロセス名、そのプロセスの停止方法のヒントつきで表示されます

それでは、良きプロセス管理ライフを!

Read more

Raspberry Pi 5のWebサーバーをインターネットに公開する。ポートは開けない、WireCanalのトンネルで

Raspberry Pi 5のWebサーバーをインターネットに公開する。ポートは開けない、WireCanalのトンネルで

受信ポートを閉じたまま、Raspberry Pi 5のWebサーバーをインターネットに公開します。WireCanalのAgentをワンライナーで入れ、canalを作り、systemdで常駐化。ポート開放もルーター設定も不要で、操作はおよそ5分。再起動後の自動復活まで実測で検収しました。

By Qualiteg プロダクト開発部
Raspberry Pi 5を堅牢化する。SSH鍵認証・UFW・fail2banと、再起動でIPv6が復活する罠

Raspberry Pi 5を堅牢化する。SSH鍵認証・UFW・fail2banと、再起動でIPv6が復活する罠

セットアップ直後のRaspberry Pi 5は、パスワード認証が有効なまま、ファイアウォールなし、更新可能なパッケージ172件と無防備です。SSHの鍵認証化・UFW・fail2ban・自動更新・IPv6無効化を実コマンドと実測検収で解説します。sysctlのIPv6無効化が再起動で復活する現象と恒久対策も実機で確認しました。

By Qualiteg プロダクト開発部
LINE Botをローカルで開発する。WebhookのURLが毎回変わる問題を固定URLで解決する

LINE Botをローカルで開発する。WebhookのURLが毎回変わる問題を固定URLで解決する

こんにちは! LINE Botを作ろうとして最初にぶつかる壁は、コードではなくWebhookです。 LINEのMessaging APIは、ユーザーがBotに送ったメッセージを、LINEのサーバーからこちらのサーバーへHTTPSのPOSTで通知してきます。 この受け口(Webhook URL)にはインターネットから届くHTTPSのURLしか指定できず、開発中の http://localhost:5000 をそのまま書くことはできません。 トンネルツールで一時URLを発行して回避する方法が定番ですが、今度は別の問題が待っています。トンネルの方式によっては、起動のたびにランダムなURLが発行されます。その場合、開発を再開するたびにLINE Developersコンソールを開いてWebhook URLを書き換えることになります。コードを直すたび、翌日再開するたび、まずURLの貼り直しから。これが地味に堪えます。 結論から言うと、 ローカルPCの開発サーバーに「変わらない公開URL」を1本付けてしまえば、Webhook URLの設定は最初の1回だけで終わります。 この記事では、L

By Qualiteg プロダクト開発部