GNU/Linux >> Linux の 問題 >  >> Linux

ネットワーク ポートは開いていますが、プロセスが接続されていませんか?

解決策 1:

root または sudo で netstat と lsof を実行しましたか?最後の列に注目してください:

netstat -ln --program
tcp        0      0 192.168.21.1:53         0.0.0.0:*               LISTEN      -               
tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      -               
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      -

sudo netstat -ln --program
tcp        0      0 192.168.21.1:53         0.0.0.0:*               LISTEN      2566/named      
tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      2566/named      
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      3125/sshd

netstat マンページから:

<ブロック引用>

所有していないソケットでこの情報を表示するには、スーパーユーザー権限も必要です。

走っている人がいないってどうしてわかるの?ポートが使用中の場合、'socket in use' エラーですぐに終了することは理にかなっています。ポートに telnet するとどうなりますか?

telnet localhost 5666

解決策 2:

カーネルによって開かれたポートは、プログラム名とともに表示されません。いくつかの NFS および OCFS が思い浮かびます。多分それはそのようなものですか?

または、カーネルのバグである可能性があります。カーネル ログで OOPS とバグを確認してください。

解決策 3:

root ユーザーとして「netstat --tcp --udp --listening --program」を実行します .そうしないと、PID/プログラム名が得られません

kill -9 PID コマンドを使用

解決策 4:

私は実際に、これらの時折の質問を特定するのに役立つ小さなシェル スクリプトを作成しました:

#! /bin/bash
([ "$1" = "" ] || [ "$2" = "" ]) && echo "Usage: tracer <space> <port>" && exit 0
for i in `fuser -n $1 $2`
 do
  ps aux | grep $i | grep -v 'grep'
 done

/usr/local/bin/tracer として保存します。出力:

[email protected]:/usr/flows# tracer tcp 80
80/tcp:             
root     27904  0.0  0.0 111668  3292 ?        Ss   Aug04   0:03 /usr/sbin/apache2 -k start
www-data 32324  0.0  0.0 335332  3560 ?        Sl   Aug05   0:00 /usr/sbin/apache2 -k start
www-data 32327  0.0  0.0 335324  3560 ?        Sl   Aug05   0:00 /usr/sbin/apache2 -k start

使用するには root 権限が必要です

解決策 5:

netstat を介して i ノードを取得し、その i ノードを lsof で使用することで、プロセスを追跡することができました。 https://serverfault.com/a/847910/94376 で私のより詳細な回答を参照してください。


Linux
  1. 知っておくべき14の一般的なネットワークポート

  2. CentOS / RHEL :ネットワーク ポートが開いているかどうかを確認する方法は?

  3. Linux でポートが開いているかどうかを効率的にテストしますか?

  1. ネットワーク接続をテストするためのポートへのTelnet

  2. Linuxでポートを開く方法

  3. ポート 80 で実行中のプロセスを強制終了する

  1. FirewallDでポート80と443を開く方法

  2. Linux –プロセスのネットワークアクセスをブロックしますか?

  3. プロセスごとに開いているファイルをカウントする