Linuxでアプリケーションが使用しているポート番号を確認する方法

さくらのVPSサーバを契約してサイト運営しているのですが、新しいサービスをインストールする際に、すでにインストールされているサービスを確認したり、使用されているポートの確認を行うことがあります。

数か月に一回行うので、コマンドを覚えておらず、毎回調べるので、メモしておきます。。

アプリケーション(プロセス)が使用しているポートの一覧を表示する。

lsof

lsofはLiStOpenFilesの略で、プロセスが開いているファイルの情報を表示します。

Linux系のOSでは、待機ポートもファイルとして扱っているので、このコマンドで使用(Bind)されているポートの情報も見ることが可能です。

主なオプションは以下の表のとおりです。

その中で、私が調査によく使うオプションは「lsof -I -P -n」で、以下のような出力が得られます。

$lsof -I -P -n
COMMAND   PID   USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
squid     866  squid    7u  IPv6 46474309      0t0  UDP *:43699 
squid     866  squid    8u  IPv4 46474310      0t0  UDP *:47211 
squid     866  squid   14u  IPv6 46474518      0t0  TCP *:60088 (LISTEN)
ntpd     1234    ntp   16u  IPv4     9507      0t0  UDP *:123 
ntpd     1234    ntp   17u  IPv6     9508      0t0  UDP *:123 
master   1315   root   12u  IPv4     9791      0t0  TCP 127.0.0.1:25 (LISTEN)
master   1315   root   13u  IPv6     9793      0t0  TCP [::1]:25 (LISTEN)
mysqld   2126  mysql   10u  IPv4    44617      0t0  TCP *:3306 (LISTEN)
httpd    7015 apache    4u  IPv6 4567248      0t0  TCP *:80 (LISTEN)
httpd    7016 apache    4u  IPv6 4567248      0t0  TCP *:80 (LISTEN)
httpd    7017 apache    4u  IPv6 4567248      0t0  TCP *:80 (LISTEN)
httpd    7018 apache    4u  IPv6 4567248      0t0  TCP *:80 (LISTEN)
httpd   23960   root    4u  IPv6 4567248      0t0  TCP *:80 (LISTEN)
sshd    28895   root    3u  IPv4 4794363      0t0  TCP *:222 (LISTEN)

-iオプションはポート番号を指定すること可能なので、以下のようにすると、例えば60088番ポートを使用しているプロセスのみの情報を表示することができます。

$lsof -i:60088 -P -n