lsof 출력에서 ​​'양말' 라인은 무엇입니까?

lsof 출력에서 ​​'양말' 라인은 무엇입니까?

Ubuntu/Debian의 lsof 명령에서 아래와 같은 줄이 많이 표시됩니다.

PROGRAM 829 root  140u     sock        0,8       0t0 244182 protocol: TCP

이 줄은 무엇입니까?

실패한 TCP 연결 시도의 결과일 수 있습니까?

답변1

lsof이 줄은 TCP 소켓에 대한 추가 정보를 찾을 수 없을 때 표시됩니다 . TCP 소켓인 것은 알지만 그 이상은 알 수 없습니다.

제가 생각할 수 있는 이유는 두 가지입니다.

  • 가능성 없음: 소켓이 여전히 수신하지도 않고 연결하지도 않습니다. 예를 들어 서버나 클라이언트가 사용됩니다.socket(AF_INET, SOCK_STREAM, 0)TCP 소켓을 생성했지만 아직 호출하지 않았습니다.listen(2)또는connect(2). 이는 리소스 부족이나 소프트웨어 버그로 인해 발생할 수 있습니다.

  • 아마도 오늘날에는 lsof다른 프로세스에서 실행되는 프로세스를 볼 수 있습니다.네트워크 네임스페이스, 일반적으로 컨테이너(Docker, LXC, LXD ...)에 있으므로 lsof관련 정보에 액세스할 수 없으며 표시하지 않습니다.

    lsof그런 다음 프로세스와 동일한 네트워크 네임스페이스에서 실행해야 합니다 . 그만큼lsns그리고nsenter명령은 이를 위해 큰 도움이 될 수 있습니다. 귀하의 경우에는 아마도 작동할 것입니다.

      nsenter -t 829 --net lsof -n -p 829
    

일반적인 경우에는 수신 포트나 관련 주소와 같은 추가 정보가 표시되거나 대신 lsof표시됩니다 IPv4. 아직 진행 중인 연결도 관련된 주소와 함께 표시됩니다 .IPv6sockSYN_SENT

관련 정보