소켓의 경로 이름으로 소켓의 세부 정보를 찾으십니까?

소켓의 경로 이름으로 소켓의 세부 정보를 찾으십니까?

strace클라이언트 애플리케이션 오류에 대해 실행했는데 다음과 같은 결과가 나왔습니다.

socket(PF_LOCAL, SOCK_SEQPACKET|SOCK_CLOEXEC|SOCK_NONBLOCK, 0) = 3
setsockopt(3, SOL_SOCKET, SO_PASSCRED, [1], 4) = 0
connect(3, {sa_family=AF_LOCAL, sun_path="/path/to/socket"}, 19) = -1 EPROTOTYPE (Protocol wrong type for socket)
close(3)                                = 0
exit_group(2)                           = ?
+++ exited with 2 +++

나는 그런 다음추측하다다양한 매개변수를 사용하여 소켓을 에뮬레이션하여 소켓 유형을 변경했지만 socat소용이 없었습니다.

나는 또한 이 답변의 코드를 보았습니다.여기, 그러나 기존 소켓을 사용하지 않고 소켓을 만드는 것으로 보이며 경로에서 소켓을 얻는 방법을 찾을 수 없는 것 같습니다.

소스 코드를 자세히 조사하지 않고도 소켓 경로(존재하는 경우)에서 기존 소켓의 세부 정보(예: 프로토콜 유형)를 쉽게 확인할 수 있는 방법이 있습니까?

답변1

당신이 사용할 수있는 lsof /path/to/socket:

COMMAND     PID USER   FD   TYPE             DEVICE SIZE/OFF      NODE NAME
hindsight 19619 root    6u  unix 0xffff88038612b480      0t0 257123917 /path/to/socket

이를 알면 PID프로세스 자체에 대해 더 자세히 알아볼 수 있습니다.

cat /proc/19619/io 
rchar: 11635200437
wchar: 2722080850
syscr: 16905056
syscw: 920240
read_bytes: 36397568
write_bytes: 3515994112
cancelled_write_bytes: 760422400

ss또는 모든 Unix 소켓을 표시하는 데 사용할 수도 있습니다 .

ss -x
  • -xUnix 도메인 소켓 표시
  • -e자세한 소켓 정보 표시
  • -m소켓 메모리 사용량 표시

일부 유형을 필터링할 수 있습니다.

ss -x -A unix_stream

관련 정보