現在開いているすべての抽象Unixソケットを一覧表示するコマンドまたはシステムコールはありますか?
修正するnetstat -x
:一部の人は理論的には機能しますが、抽象ソケットの名前はリストせず、パスのある名前だけをリストするを使用することを提案しました。
bash-5.0$ netstat -xeW
Active UNIX domain sockets (w/o servers)
Proto RefCnt Flags Type State I-Node Path
unix 2 [ ] STREAM CONNECTED 3959158
unix 2 [ ] STREAM CONNECTED 3961068
unix 3 [ ] STREAM CONNECTED 3965008
unix 3 [ ] STREAM CONNECTED 3967192 /run/spire/writable/agent.sock
答え1
抽象ソケット
パス名はNUL文字で始まるため、パスの長さは0になります。残りの107文字を使用して、他のプログラムが接続するために使用できる一意の識別子を定義できます。ファイルシステムには表示されません。
ほとんどのUNIXには、オープンファイルリスト(lsof)コマンドが付属しています。そうでない場合は、簡単に追加できます。
lsof -U
upowerd 1604 root 5u unix 0xffff88005af5f400 0t0 18631 type=STREAM
colord 1614 colord 10u unix 0xffff880034d3f400 0t0 18170 type=STREAM
systemd 2009 root 13u unix 0xffff88005a293000 0t0 21213 /run/user/0/systemd/notify type=DGRAM
systemd 2009 root 14u unix 0xffff88005a293c00 0t0 21214 /run/user/0/systemd/private type=STREAM
Linuxでは、抽象名前空間パスを表示すると、nullバイトが@に変換されます。以前のツールバージョンでは、ゼロバイトを正しく処理できない可能性があります。
upstart 1525 lightdm 7u unix 0xffff880034b99800 0t0 17301 @/com/ubuntu/upstart-session/111/1525 type=STREAM
システム上のすべてのUNIXドメインソケットを一覧表示できます。
「ss」コマンドは、ソケットと抽象ソケットを表示することもできます。同様に、抽象ソケットには@プレフィックスが付いています。
頑張ってください!