UNIXドメインソケットのアドレスの種類

Redis コア開発者 @pnoordhuis のツイートで Unix ドメインソケットに abstract socket address なるソケットアドレスがあることを知る。 ということで Unix ドメインソケットのソケットアドレスの種類を調べてみた。 ソケットアドレスの種類 Unix ドメインソケットでは大きく分けて次の3種類のアドレスで通信できる。 ファイルシステムパス名(pathname) 無名(unnamed) 抽象名前空間(abstract) 1. ファイルシステムパス名 一番一般的な手法。sun_path にファイルシステム上のパスを指定する。 ファイルシステム上にファイルを作成しているので、ソケット通信の際にもファイルシステムのパーミッションなどの制約がそのままつきまとう。 サーバプロセスが終了するときには、ソケットファイルを unlink(2) するのがお作法 pathname : a UNIX domain socket can be bound to a null-terminated file system pathname using bind(2). When the address of the socket is returned by getsockname(2), getpeername(2), and accept(2),Continue reading “UNIXドメインソケットのアドレスの種類”

lsof:オープンしているファイルを調べる

オープンしているファイルディスクリプタの調べ方を調査した。 lsof =list open files lsof コマンドを利用すると、オープンされているファイルを調べることができる。実行には root 権限が必要。このコマンドは Linux にかかわらず多くの *nix 系OS に移植されている。 オープンファイルの一覧表示 プロセス名で指定 PID で指定 ポートで指定 出力結果の確認 肝は FD(ファイルディスクリプタ) と TYPE。いくつかを例にとると 3u unix → read-write fd で unix ドメインソケット mem REG → メモリーマップファイルで、通常のファイル rtd dir → ルートディレクトリ 4u IPv4 → read/write の IPv4 socket 2w REG → write only の通常ファイル r FIFO → read only の FIFO FDContinue reading “lsof:オープンしているファイルを調べる”