FreeBSD QandA 800

FreeBSD QandA

Q. あるポート (port) 番号を使っているプログラムがどれなのかを
   調べる方法はありますか?

A. 以下に示す方法が考えられます。

   A1. FreeBSD 3.1-RELEASE 以降なら sockstat(1) で調べられます。
       なお、このコマンドは perl スクリプトで、やっている事は ほとんど
       A2. の説明そのものです。

   A2. netstat -A コマンドと fstat コマンドを組み合わせれば調べられます。
       netstat -an で使用中のポート番号の一覧が表示されます。さらに -A を
       指定すると、プロトコル制御ブロック (pcb) のアドレスも表示されます。
       どのプログラムが どの socket を使っているかは fstat コマンドで
       調べられますので、この pcb を対応付ければわかります。

       例えば、調べたいポート番号を1234番とすると
          % netstat -anA | fgrep '*.1234'
       の結果の第一フィールドを f074a000 とすれば
          % fstat | grep f074a000
       でわかります。

   A3. port/package を使って sysutils/lsof をインストールしてあれば、
       su で root 権限を得て、
          % lsof -i :1234
       とすることで、ポート番号 1234番を使用しているコマンドを
       調べることができます。

間違い・追加情報を見付けた場合は、 修正案の投稿のしかた を読んだ上で、
QandA@jp.FreeBSD.org まで お知らせください。