このWebソケットを使用するものは何ですか?

このWebソケットを使用するものは何ですか?

NTPを使用して自分のコンピュータの時間を更新しようとしています。ただし、エラーが発生します。

host # ntpdate ntp1.example.org
10 Aug 12:38:50 ntpdate[7696]: the NTP socket is in use, exiting

「ソケット使用中」エラーとはどういう意味ですか?このソケットを使用するものとはどうすればわかりますか?

この問題は私のCentOS 4.xシステムで発生しますが、FreeBSD 7.x、Ubuntu 10.04、およびSolaris 10でも発生します。

答え1

あなたはできます

lsof -n | grep -i "TCP\|UDP" | grep -v "ESTABLISHED\|CLOSE_WAIT"

すべてのリスニングポートを確認しますが、ntpdは実行中です。

service ntpd status

「使用中のソケットとはどういう意味ですか?」いくつかの問題を解決したことを許すことができれば(非常に基本的な説明についてお詫び申し上げます。ほとんどの説明が役に立ちます)、TCP / IP(インターネット言語)は、すべてのコンピュータが一意に識別するIPアドレスをを指定します。このコンピュータはインターネット上にあります。さらに、IPアドレスあたりの接続可能なポート数は65,000です。

Web サーバーに接続する場合は、ブラウザーでサイトを開きますが、基本システムは実際には Web サーバー IP のポート 80 に接続します。 Webサーバーのデーモン(ポート80で接続をリッスンするプログラム)は、「ソケット」を使用してそのポートを開いたままにして独自に予約します。同時に、1つのプログラムのみが同じポートを使用できます。

ntpdが実行中なので、そのポートを使用しています。 「ntpdate」はポートにアクセスしようとしますが、ポートが開いているため、「ソケットがすでに使用中」というエラーが発生します。

編集する
UDPアカウントにも変更

答え2

netstatを使用して開いているソケットを見つけることもできます。他のポスターが提案したように、lsofを使用するよりもはるかにきれいです。 rootでこのコマンドラインを試してください

netstat -lp -u -t

関連する PID やプログラムを含むすべてのリスニング接続を表示します。 -l パラメーターはリスニング接続を指定し、-p は PID/名前を表示することを指定し、-t および -u は TCP 接続と UDP 接続 (IPv4 および IPv6) のみを netstat に通知します。

数値のポートとホスト名(つまり、ホストの場合は解決されず、ポートの場合はサービス名に変換されません)を表示するには、上記の-nコマンドラインに追加します。

編集する:これはLinuxで動作します。私はBSDベースのシステムがないので、BSDでどれだけうまく機能しているかわかりません。

答え3

FreeBSDでは、lsofが機能しない場合(たとえば、何らかの理由で/ dev / memを持たない仮想化システムで)、sockstatを使用することもできます。 IPv4ソケットを受信するすべてのプログラムのリストを取得するには:

sockstat -l4

答え4

lsofを使用して、このソケットを使用するアプリケーションを見つけることができます。

関連情報