スポンサーリンク

【Ubuntu】使用(待ち受け)しているポート番号を調べる方法(lsof -iコマンド)

Ubuntuで「lsof -i」コマンドで、使用(待ち受け)しているネットワークのポート番号を調べる方法です。

lsof -i 使用しているポート番号を調べる

「lsof -i」コマンドで、現在使用(待ち受け)しているネットワークのポート番号を調べることができます。

sudo lsof -i

表示される情報は下記の項目となっています。

ネットワークで使用しているポート番号を調べるだけであれば、「COMMAND」「TYPE」「NODE」「NAME」ぐらいの情報で足りると思います。

項目 内容
COMMAND 実行しているコマンド
PID プロセスID番号
USER 実行ユーザ
FD ファイルディスクリプタ
TYPE IPプロトコルバージョン(IPv4,IPv6)
DEVICE デバイス番号
SIZE/OFF ファイルサイズまたはオフセット
NODE インターネットプロトコル(TCP,UDP)
NAME 使用しているポート(ネットワークアドレス:ポート番号)

使用例

実際に「lsof -i」コマンドで使用しているポート番号を表示させてみます。

※表示される数が多いので「head」コマンドで最初の5行のみ表示させています。

$ sudo lsof -i | head -5
COMMAND      PID            USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
systemd        1            root   86u  IPv6    7752      0t0  TCP *:10022 (LISTEN)
systemd-r    710 systemd-resolve   14u  IPv4    7584      0t0  UDP _localdnsstub:domain 
systemd-r    710 systemd-resolve   15u  IPv4    7585      0t0  TCP _localdnsstub:domain (LISTEN)
systemd-r    710 systemd-resolve   16u  IPv4    7586      0t0  UDP _localdnsproxy:domain 

条件を指定して表示

「-i」の後に下記の項目を指定することで、それぞれ指定したものだけを表示させることができます。

  • -i4 IPv4
  • -i6 IPv6
  • -iTCP TCP
  • -iUDP UDP
  • -i:ポート番号

ポート番号は「,」で区切ることで複数指定することもできます。

「587」と「993」番ポートを指定してみます。

$ sudo lsof -i:587,993
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
dovecot  801 root   35u  IPv4  22105      0t0  TCP *:imaps (LISTEN)
master  1412 root   17u  IPv4  22720      0t0  TCP *:submission (LISTEN)

条件は複数指定できるので、試しに「IPv6」「TCP」「80番ポート」の3つを指定してみます。

$ sudo lsof -i6TCP:80
COMMAND PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
nginx   961  root   11u  IPv6  20066      0t0  TCP *:http (LISTEN)
nginx   970 nginx   11u  IPv6  20066      0t0  TCP *:http (LISTEN)
nginx   971 nginx   11u  IPv6  20066      0t0  TCP *:http (LISTEN)
nginx   975 nginx   11u  IPv6  20066      0t0  TCP *:http (LISTEN)

オプション

私が普段良く使うオプションの紹介をします。

  • -n NAME部分のIPアドレスを名前解決しない
  • -P ポート番号をポート名に変換しない
  • +c 数字 COMMAND部分で表示される文字数を指定(0-15 0はコマンド名を全て表示)

まずは「-i」オプション以外を指定しない状態で「lsof」コマンドを実行してみますので、上記のオプションを指定した場合と比較してどの様に表示内容が変化するのか確認してみてください。

$ sudo lsof -i | head -5
COMMAND      PID            USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
systemd-n    692 systemd-network   15u  IPv4 2133565      0t0  UDP vpslife.server-memo.net:bootpc 
systemd-r    717 systemd-resolve   13u  IPv4   20737      0t0  UDP localhost:domain 
systemd-r    717 systemd-resolve   14u  IPv4   20738      0t0  TCP localhost:domain (LISTEN)
dovecot      801            root   21u  IPv4   22093      0t0  TCP *:pop3s (LISTEN)

-n NAME部分のIPアドレスを名前解決しない

「-n」オプションを使用すると、NAME部分のネットワークアドレスを名前解決せずにIPアドレスで表示させることが出来るようになります。

$ sudo lsof -i -n | head -5
COMMAND      PID            USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
systemd-n    692 systemd-network   15u  IPv4 2133565      0t0  UDP 118.27.106.189:bootpc 
systemd-r    717 systemd-resolve   13u  IPv4   20737      0t0  UDP 127.0.0.53:domain 
systemd-r    717 systemd-resolve   14u  IPv4   20738      0t0  TCP 127.0.0.53:domain (LISTEN)
dovecot      801            root   21u  IPv4   22093      0t0  TCP *:pop3s (LISTEN)

-P ポート番号をポート名に変換しない

NAME部分に表示されているポート番号は変換できるものはポート名に変換されて表示されています。(例:443番ポートをhttpsと表示)

「-P」オプションを使用すると数字でポート番号が表示されるようになります。

$ sudo lsof -i -P | head -5
COMMAND      PID            USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
systemd-n    692 systemd-network   15u  IPv4 2133565      0t0  UDP vpslife.server-memo.net:68 
systemd-r    717 systemd-resolve   13u  IPv4   20737      0t0  UDP localhost:53 
systemd-r    717 systemd-resolve   14u  IPv4   20738      0t0  TCP localhost:53 (LISTEN)
dovecot      801            root   21u  IPv4   22093      0t0  TCP *:995 (LISTEN)

+c 数字 COMMAND部分で表示される文字数を指定

「+c 数字(表示させる文字数)」オプションで「COMMAND」部分に表示する文字数を指定することができます。

「+c」オプションを指定しない場合のデフォルト設定は、9文字分が表示されるようになっています。

文字数は「0〜15」を指定することができますが、「COMMAND」(7文字)の長さより短い数字が指定された場合は、その長さまでに表示数が引き上げられます。

「0」を指定した場合は、省略されずに全ての文字が表示されます。

下記の例では「+c 1」と指定していますが、「COMMAND」と同じ長さの7文字分まで表示されています。

$ sudo lsof -i +c 1 | head -5
COMMAND    PID            USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
systemd    692 systemd-network   15u  IPv4 2133565      0t0  UDP vpslife.server-memo.net:bootpc 
systemd    717 systemd-resolve   13u  IPv4   20737      0t0  UDP localhost:domain 
systemd    717 systemd-resolve   14u  IPv4   20738      0t0  TCP localhost:domain (LISTEN)
dovecot    801            root   21u  IPv4   22093      0t0  TCP *:pop3s (LISTEN)

「0」を指定するとコマンド名は省略されず全てが表示されます。

$ sudo lsof -i +c 0 | head -5
COMMAND            PID            USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
systemd-network    692 systemd-network   15u  IPv4 2133565      0t0  UDP vpslife.server-memo.net:bootpc 
systemd-resolve    717 systemd-resolve   13u  IPv4   20737      0t0  UDP localhost:domain 
systemd-resolve    717 systemd-resolve   14u  IPv4   20738      0t0  TCP localhost:domain (LISTEN)
dovecot            801            root   21u  IPv4   22093      0t0  TCP *:pop3s (LISTEN)

コメント

タイトルとURLをコピーしました