FreeBSD QandA 800
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 まで
お知らせください。