windowsでポートに常駐しているプログラムを特定して解除する
netstatを利用してポートに先客がいた場合に何が常駐しているか調べる方法です。
私の場合はnginxを起動しようとしたときにエラーがでて、
404 not found エラーが出ず、DNSなんちゃらというエラーが出たので
常駐しているプログラムを調べる方法を探してみました。
webサーバ起動時のエラー
nginxを入れようとして起動すると
C:\nginx>nginx
nginx: [emerg] bind() to 0.0.0.0:80 failed (10013: An attempt was made to access
a socket in a way forbidden by its access permissions
webブラウザで確認
アクセスが拒否されとるということで、
http://localhost/ へアクセス
Bad Request (Invalid Hostname)
直前にIISを入れて、サービスを停止していたのですが何故か動いているようでした。
IISをアンインストールして再起動してもnginxが起動しない現象が続きました。
netstatにて常駐プログラムの特定
ポートの専有を調べるためにnetstatコマンドを利用。
>netstat
.....
TCP hoge:http hoge.hogehogehoge.co.jp:1224 TIME_WAIT
....
なにかがhttpポート(80番)で動いていることが確認。
httpポートで動いているプロセスを調べるために -oa オプションを利用すればいいらしい
>netstat -oa Proto Local Address Foreign Address State PID TCP hostname:http hostname:0 LISTENING 1884
ここのPIDを確認する。
タスクマネージャ > プロセスタブ を開いてPIDを確認する。
PIDが出てない人はプロセスタブを開いた状態で上部の 表示 > 列の選択を開いてPIDにチェックを入れる。
MsDepSvcの停止
自分の場合には「MsDepSvc.exe」が80番ポートで動作していました。
いれた覚え無いんですけどIISと一緒に入ってしまった?
誰だよと思って調べるとWeb 配置エージェント サービスとういものらしい。
停止方法1(コマンドプロンプトで入力)
>sc start msdepsvc
停止方法2(サービス管理ツールから停止)
マイコンピュータのアイコン右クリック > 管理 > サービス
Web Deployment Agent Swervice 停止
停止後 nginxを起動。
http://localhost/ へアクセス。
無事にアクセスできました。
参考
netstatでリッスンしているプロセスを特定する
http://www.atmarkit.co.jp/fwin2k/win2ktips/236portcheck/portcheck.html
リモートサービスの管理
http://technet.microsoft.com/ja-jp/library/dd569053%28WS.10%29.aspx
-
前の記事
MinecraftをリスペクトしたPV 2011.08.23
-
次の記事
活動ログ 2011/08/25 2011.08.25