경로명으로 소켓의 세부정보를 찾으시겠습니까?

경로명으로 소켓의 세부정보를 찾으시겠습니까?

나는 실패 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

관련 정보