gulp-connect-phpでPHPサーバーを立ち上げ,Ctrl+Cしてサーバーを停止させたつもりだったが,何らかの原因でサーバープロセスがポートを専有し続け,次回Gulpをした時にそのポートはすでに使われていますよ!と警告を表示されたことがあった. ここではどのプロセス(PID)がどのポートを使用中なのかを突き止めkillコマンドでそのプロセスを停止させるまでの方法をまとめる.
プロセスを突き止める!
今回はTCPのポート8000を使うPHPサーバーが意図せずして動作し続けてしまった場面を想定してみよう. 次のコマンドでTCPの8000を使用しているプロセスを表示できる.
プロトコル名の後に:(コロン)をつけてサービス名(/etc/services中の名前で例えばftpやhttpなど),もしくはポート番号を入力することで,検索対象を特定のサービスやポート番号に絞ることが出来る.
今回の例ではTCPのポート8000を利用しているプロセスを一覧表示してくれる. PHPサーバーがポート8000で立ち上がっていると次のような結果が表示される
lsof -wi tcp:8000
今回は使用中のプロセスを調べるだけなので-wで警告の表示を抑制した. iオプションに続いてプロトコル名(ここではTCP)を入力することで,そのプロトコルを利用しているプロセス一覧を表示してくれる.プロトコル名の後に:(コロン)をつけてサービス名(/etc/services中の名前で例えばftpやhttpなど),もしくはポート番号を入力することで,検索対象を特定のサービスやポート番号に絞ることが出来る.
今回の例ではTCPのポート8000を利用しているプロセスを一覧表示してくれる. PHPサーバーがポート8000で立ち上がっていると次のような結果が表示される
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
php 25746 Username 3u IPv4 0x0123456789abcdef 0t0 TCP localhost:irdmi (LISTEN)
phpコマンドがPID25746で動いていることがわかった. 後はこれをkillすれば良い.
プロセスをkill!
ポートを専有しているプロセスをkillしよう. 次のコマンドでkillできる.
kill -9 25746
-9は指定したプロセスを強制的にkillするためのオプション(-KILLというエイリアスもある). その後に続く数値はkillしたいプロセスのPIDである. これでPHPサーバーは死んだ...
このような状況に陥ることは滅多に無いが,もしもの時にプロセスを調べる術を覚えておくと便利であるし,何よりターミナルを使いこなせている感が味わえるのでなんだか嬉しい気分になれるはず.
4129900653958489140
https://www.storange.jp/2018/05/blog-post.html
https://www.storange.jp/2018/05/blog-post.html
特定のポートを使っているプロセスを突き止める方法
2018-05-10T12:37:00+09:00
https://www.storange.jp/2018/05/blog-post.html
Hideyuki Tabata
Hideyuki Tabata
200
200
72
72