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

Debian:プロセスがリッスンしているポート番号を調べます

ご存知のとおり、ポートは一度に1つのプロセスまたはサービスによってのみ使用されます。ポートは、システムで実行されている特定のサービスまたはプロセスを識別します。トラブルシューティング中に、特定のプロセスがリッスンしているポート番号を知る必要がある場合があります。システムで実行されているすべてのプロセスは、プロセス識別番号(PID)とポート番号に関連付けられています。特定のプロセスがリッスンしているポート番号を見つけるために、この記事で説明する方法はいくつかあります。

記事に進む前に、root権限を持っていることを確認してください。システムで実行されているプロセスに関する包括的な情報を取得するのに役立ちます。

この記事に記載されているコマンドと手順の実行にはDebian10を使用していることに注意してください。

方法1:netstatコマンドを使用する

Netstatは、ネットワーク接続、インターフェイス統計、およびルーティングテーブルに関する情報を表示するために使用できる最も一般的に使用されるコマンドラインユーティリティです。また、特定のプロセスで使用されているポート番号を見つけるためにも使用できます。すべてのLinuxディストリビューションのリポジトリにすでにインストールされているため、インストールする必要はありません。ただし、システムにまだインストールされていない場合は、次のコマンドを使用してインストールしてください。

$ sudo apt install net-tools

プロセスがリッスンしているポート番号を見つけるには、ターミナルで次のコマンドを実行します。

$ sudo netstat -ltnp

次の出力は、特定のプロセスで使用されるポート番号とそのプロセスID(PID)を示しています。

sudo権限がなく、sudoなしで上記のコマンドを実行すると、次の出力に示すように、プログラム名とPIDは表示されません。

それでは、 ltnpが何であるかを見てみましょう。 上記のコマンドの意味:

l –リスニングソケットを表示する

t –TCP接続を表示

n – IPアドレスとポート番号を数値形式で表示する

p –PID/プログラム名を表示

$ sudo netstat -ltnpの出力を見ると 、4番目の列は、まさに私たちが探しているものです。プロセスがリッスンしているポート番号です。

単一のプロセスのポート情報を取得するには、grepコマンドを使用してnetstatの出力をパイプするだけです。

たとえば、「sshd」に対してポート番号を見つけるには、次のコマンドを使用します。

$ sudo netstat –ltnp | grep ‘sshd’

同様に、特定のポート、たとえばポート21でリッスンしているプロセス名を調べたい場合は、次のコマンドが使用されます。

$ sudo netstat -ltnp | grep -w ':21'

方法2:lsofコマンドを使用する

lsofコマンドを使用すると、システムで実行されているプロセスによって開かれているすべてのファイルのリストを表示できます。 Lsofは、情報を取得するための単一のソースとして機能できます。それ以外の場合は、多数の管理ツールが必要になります。 netstatコマンドと同様に、詳細情報を取得するにはsudo権限が必要です。

lsofがシステムにまだインストールされていない場合は、ターミナルで次のコマンドを使用してインストールします。

$ sudo apt install lsof

インストールすると、lsofユーティリティを使用して、特定のポートで実行されているプロセスを見つけることができます。パラメータを指定せずにlsofユーティリティを実行すると、理解しにくい多くの情報が返されます。ただし、lsofでパラメーターを使用すると、フィルターを除外して目的の出力に集中するのに役立ちます。

ここで、特定のポート、たとえばポート22でリッスンしているプロセスを見つけるには、次のコマンドを使用します。

$ sudo lsof -i :22

このコマンドは、ポート22で実行されているすべてのプロセスを返します。

方法3:fuserコマンドを使用する

フューザーは、ファイル、ディレクトリ、またはファイルシステムを使用しているプロセスIDを見つけるために使用されるLinuxコマンドです。このコマンドを使用して、特定のポートで実行されているプロセスを見つけることができます。

フューザーコマンドを使用するには、psmiscユーティリティが必要です。システムにまだインストールされていない場合は、次のコマンドを実行してインストールします。

$ sudo apt install psmisc

任意のポート(たとえばTCPポート22)で実行されているプロセスを表示するには、ターミナルで次のコマンドを実行します。

$ sudo fuser 22/tcp

上記のコマンドは、ポート番号22でリッスンしているプロセスを返しました。プロセスIDに対してプロセス名を表示するには、次のコマンド構文を使用します。

$ ps -p [processID] -o comm=

私たちの場合は

$ ps -p [5859] -o comm=

上記の出力から、プロセスID5859に対してプロセス名sshdを見つけることができます。これはプロセスID5859のsshdがポート22でリッスンしていることを意味します。

この記事では、特定のプロセスがリッスンしているポートを表示するために使用できるいくつかのコマンドラインユーティリティについて学習しました。


Debian
  1. Debian –特定のコマンドを提供するパッケージを見つけますか?

  2. 特定のコマンドに対応する実行可能ファイルを見つけるための unix コマンドは何ですか?

  3. ファイルを変更しているプロセスを見つける

  1. Linuxで特定のプロセスを実行しているCPUコアを見つける4つの方法

  2. Rsyslogリスニングポート番号を把握しますか?

  3. Debian –特定のパッケージがどのようにインストールされたかを知る方法は?

  1. Debian10でプライベートIPアドレスを見つける方法

  2. Linuxでファイルを使用しているプロセスを見つける方法は?

  3. Linuxでプロセスの優先順位を見つけるコマンドは何ですか?