LoginSignup
0
0

More than 3 years have passed since last update.

"address already in use"と言われた

Posted at

Jetsonでdockerizationしてネットワーク接続を試していた時、"address already in use"と言われてしまった。
どのプログラムがそのport を使っているのかなー、と知りたくなりました。
調べることができたので、メモしておきます。

方法:netstat -anp

それだけです。以下メモ。

準備

netstat は net-tools のインストールで入った。

$ sudo apt install net-tools

探してみる

とりあえずnetstat -anpでみる。ポート番号を指定したければ、pipe でつないで grep するのが楽。

$ netstat -anp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:2101            0.0.0.0:*               LISTEN      6/./bin/ntripcaster
tcp        0      0 0.0.0.0:59999           0.0.0.0:*               LISTEN      7/str2str
tcp        0      0 127.0.0.1:48232         127.0.0.1:2101          CLOSE_WAIT  11/str2str
tcp        0      0 127.0.0.1:51384         127.0.0.1:59999         ESTABLISHED 11/str2str
tcp        0      0 127.0.0.1:2101          127.0.0.1:48232         FIN_WAIT2   -
tcp        0      0 127.0.0.1:2101          127.0.0.1:48228         TIME_WAIT   -
tcp        0      0 127.0.0.1:2101          127.0.0.1:48224         TIME_WAIT   -
tcp        0      0 127.0.0.1:59999         127.0.0.1:51384         ESTABLISHED 7/str2str
tcp        0      0 127.0.0.1:2101          127.0.0.1:48226         TIME_WAIT   -

$ netstat -anp | grep :2101
tcp        0      0 0.0.0.0:2101            0.0.0.0:*               LISTEN      6/./bin/ntripcaster
tcp        0      0 127.0.0.1:2101          127.0.0.1:48250         TIME_WAIT   -
tcp        0      0 127.0.0.1:2101          127.0.0.1:48248         TIME_WAIT   -
tcp        0      0 127.0.0.1:2101          127.0.0.1:48246         TIME_WAIT   -

なお、netstat のオプションの意味は(--helpで簡単にわかるが)、

  • -n, --numeric don't resolve names
  • -p, --programs display PID/Program name for sockets
  • -a, --all display all sockets (default: connected)

とのこと。

ほかの方法

  • 他にlsofを使う方法もネットであったが、良く分からなかった。

基礎知識

そもそも TIME_WAITとかよく分からない。(泣)
いくつかメモをここに:

まとめ

とりあえず"address already in use"のプログラムを見つけて止めることはできた。しかし、どのような状態なのか、netstat の結果の読み方が分からない。

今後の課題として

  • TCPの状態遷移の理解する
  • 実際にその遷移や状態をプログラムがどのように実現しているか説明できるようになる

があります。ふー。
(2020/10/26)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0