현재 열려 있는 모든 추상 UNIX 소켓을 나열하는 명령이 있습니까?

현재 열려 있는 모든 추상 UNIX 소켓을 나열하는 명령이 있습니까?

현재 열려 있는 모든 추상 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 바이트가 @로 변환됩니다. 이전 도구 버전에서는 0바이트를 올바르게 처리하지 못할 수 있습니다.

upstart   1525    lightdm    7u  unix 0xffff880034b99800      0t0 17301 @/com/ubuntu/upstart-session/111/1525 type=STREAM

시스템의 모든 UNIX 도메인 소켓을 나열할 수 있습니다.

"ss" 명령은 소켓과 추상 소켓을 표시할 수도 있습니다. 마찬가지로 추상 소켓에는 @ 접두사가 붙습니다.

행운을 빌어요!

관련 정보