lsof 出力の「sock」行とは何ですか?

lsof 出力の「sock」行とは何ですか?

Ubuntu/Debian の lsof コマンドでは、以下のような行が多数表示されます。

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

これらの線は何ですか?

これらは TCP 接続試行の失敗の結果である可能性がありますか?

答え1

lsofこの行は、TCP ソケットに関する追加情報が見つからない場合に表示されます。TCP ソケットであることは分かっていますが、それ以上のことは分かりません。

考えられる理由は 2 つあります。

  • あり得ない: ソケットはまだリッスンも接続もしていない: つまり、例えばサーバーまたはクライアントが使用されている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表示され、リスニング ポートや関連するアドレスなどの追加情報が表示されます。接続がまだ進行中の場合でも、関連するアドレスとともに が表示されます (例: ) 。IPv4IPv6sockSYN_SENT

関連情報