ziguzagu.org

localhost は Unixドメインソケット

今日のバッドネイチャー。

ローカルで動かしてる postgresql に、何かしらの接続が行ってるかどうかを確認するのに tcpdump で待ち構えてた。

% sudo tcpdump -xnv port 5432 -i lo

DBI の DSN には以下のような感じで設定して接続。

dbi:Pg:dbname=testdb:user:pass

psql で、

% psql -U user --password testdb

として接続するのと同じ。

はい、そこのあなた正解。

ホスト名を指定しない場合は『localhost』で接続します。つまり Unixドメインソケット。TCP/IP な通信ではないので、もちろん tcpdump でパケット拾えるわけも無く。1時間ほど無駄に悪戦苦闘。。。

psql で接続して lsof してはっとした。

% sudo lsof -c psql
COMMAND   PID   USER   FD   TYPE     DEVICE    SIZE      NODE NAME
  :
  :
psql    13551 hsakai    0u   CHR      136,7                 9 /dev/pts/7
psql    13551 hsakai    1u   CHR      136,7                 9 /dev/pts/7
psql    13551 hsakai    2u   CHR      136,7                 9 /dev/pts/7
psql    13551 hsakai    3u  unix 0xe91c7b00         162199430 socket

ノード名にしっかりと socket って出てますね。。。

今年の第1目標はも少し JavaScript が書けるようになることでしたが、とりあえず手元にあるこいつを制覇したいと思います。

ふつうのLinuxプログラミング

明日はきっとグッドネイチャー。