Linuxでポートを使用しているプロセスを特定する方法
いつも忘れるのでメモ程度に。探せばいくらでも出てくる情報です。
sudo lsof -i:ポート番号
たとえば、8080ポートを使っているプロセスを知りたい場合は、
sudo lsof -i:8080
とすることで、プロセスを特定できる。ポート番号はカンマ区切りで指定も可能。
結果の例は以下のとおり。
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
httpd 1413 apache 4u IPv4 35475668 0t0 TCP *:webcache (LISTEN)
sudo lsof -i 4tcp@0.0.0.0:8080
ここまで指定するとIPv4, TCP, 0.0.0.0でListenしている8080ポートという指定も可能。
さらにPIDからプロセスの実行ファイルを知りたい場合は、
sudo ls -l /proc/4763/exe
lrwxrwxrwx 1 root root 0 Dec 12 17:49 /proc/4763/exe -> /usr/sbin/httpd
で知ることができる。