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

Linux マシンでどのポートがビジーで、どのポートが空いているかを確認するにはどうすればよいですか?

コマンド

netstat -antu

使用中のすべての tcp および udp ポートが表示されます。出力は次のようになります:

Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 0.0.0.0:59753           0.0.0.0:*               LISTEN

Local Address フィールドのコロンの後の数字は、使用中のポートを示します。状態が「LISTEN」の場合、着信接続に使用されているポートを意味します。 Local Address の IP アドレスが フィールドは 0.0.0.0 です これは、インターフェイスに割り当てられたすべての IP アドレスで着信接続が受け入れられることを意味します。これは、マシンの外部からの接続を意味します。

localhost と表示された場合 または 127.0.0.1 あなたのマシンからの接続のみを受け入れることになります.

さらに、 -p を追加すると パラメータを設定して root として実行すると、ポートを開いたプロセスが表示されます:

$ sudo netstat -antup
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:59753           0.0.0.0:*               LISTEN      860/rpc.statd

使用中であると表示されていないものはすべて無料ですが、ユーザー (非特権アカウント) は 1023 を超えるポートしか開くことができません。


私は自分で小さなリストをまとめました.

私のお気に入りのいくつかは次のとおりです:

netstat -tulpn
lsof -i -n -P

開いているポートを確認するための適切で信頼できる方法は、 ss を使用することです (非推奨の netstat の置き換え )、昇格された特権を必要とせずにスクリプトで使用できます (つまり、 sudo ).

使い方:オプション -l リッスン ポートの場合、オプション -n DNS 解決をバイパスし、送信元ポート NN のフィルター :src :NN (NN を置き換えます 監視するポートによって)。その他のオプションについては、man ss を参照してください

ss -ln src :NN

例:

[[email protected] ~]# ss -ln src :80
State       Recv-Q Send-Q       Local Address:Port   Peer Address:Port
LISTEN      0      128                      *:80                *:*
[[email protected] ~]# ss -ln src :81
State       Recv-Q Send-Q       Local Address:Port   Peer Address:Port

また、スクリプトでは、grep を使用して、要求したポートが出力に含まれているかどうかをテストできます。ポート 80 が使用されている例 (上記を参照):

myport=80
# count the number of occurrences of port $myport in output: 1= in use; 0 = not in use
result=$(ss -ln src :$myport | grep -Ec -e "\<$myport\>")
if [ "$result" -eq 1 ]; then
  echo "Port $myport is in use (result == $result) "
else
  echo "Port $myport is NOT in use (result == $result) "
fi

# output:
Port 80 is in use (result == 1)

ポート 81 が使用されていない例 (上記参照)

myport=81
result=$(ss -ln src :$myport | grep -Ec -e "\<$myport\>")
if [ "$result" -eq 1 ]; then
  echo "Port $myport is in use (result == $result) "
else
  echo "Port $myport is NOT in use (result == $result) "
fi

# output:
Port 81 is NOT in use (result == 0)

Linux
  1. Linuxで有効/ロードされているApacheモジュールを確認する方法

  2. Linuxでどのタイムゾーンを確認する方法は?

  3. 使用可能な端末定義を確認するにはどうすればよいですか?

  1. netstat、lsof、およびnmapを使用してLinuxで開いているポートを確認する方法

  2. OSとLinuxのバージョンを確認する方法

  3. 特定のポートLinuxでリッスンしているサービスを確認します

  1. LinuxにインストールされているPHPおよびApacheモジュールを確認するにはどうすればよいですか?

  2. Ubuntu で実行されているポートとプロセスを確認する

  3. MySQL が実行されているポートと、接続できるかどうかをテストする方法は?