さくらのVPSサーバを契約してサイト運営しているのですが、新しいサービスをインストールする際に、すでにインストールされているサービスを確認したり、使用されているポートの確認を行うことがあります。
数か月に一回行うので、コマンドを覚えておらず、毎回調べるので、メモしておきます。。
アプリケーション(プロセス)が使用しているポートの一覧を表示する。
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