현재 열려 있는 모든 추상 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" 명령은 소켓과 추상 소켓을 표시할 수도 있습니다. 마찬가지로 추상 소켓에는 @ 접두사가 붙습니다.
행운을 빌어요!