特定のポートを使用してプロセスのPIDを見つける

概要

ポートは単一のアプリケーションまたはサービスでのみ使用できることは皆知っています。 ものなのかを知っておく必要がありま処理は特定のポートです。

このチュートリアルでは、Linuxの特定のポートでリッスンするプロセスを見つけるためのさまざまな方法を見ていきます。

root権限

Linuxでは、rootユーザーまたはプロセス所有者のみがプロセスの詳細情報を取得できます。,

特定のポートでリッスンしているプロセスをチェックしたいときは、そのプロセスが誰に属しているかわかりません。

root権限を持つと、プロセス識別子など、プロセスに必要なすべての情報を得ることができます。

したがって、rootユーザー(またはsudo)でネットワークツールを起動する必要があるかもしれません。

Netstatを使用する

netstatコマンドはnet-toolsパッケージのメンバーです。

過去には、多くのLinuxディストリビューションにプリインストールされていました。 ただし、net-toolsパッケージは2011年以降updatedされていません。,

最新のLinuxカーネル機能のサポートが不足しているため、net-toolsパッケージは時代遅れになりました。

とはいえ、netstat自体はまだ広く使用されているので、それがどのように役立つかを見てみましょう。

まず、netstatコマンドの出力例を見てみましょう。

オプションltnupを使用すると、netstatは上記の例で使用されているすべてのポートを表示します。,

オプションの意味を見てみましょう。

  • l–リスニングソケットのみを表示
  • t–TCP接続を表示
  • n–数値形式でアドレスを表示
  • u–UDP接続を表示
  • p–プロセスid/プログラム名を表示

上記の出力を確認すると、最後の列はまさに探しているものです。ポート。

netstat出力をgrepコマンドにパイプするだけで、個々のポートのプロセス情報を取得できます。,

たとえば、どのプロセスがポート22でリッスンしているかを見てみましょう。

root# netstat -ltnup | grep ':22'tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 575/sshd

ssを使用して

前のセクションでは、net-toolsパッケージ

ssコマンドはnetstatコマンドの置き換えコマンドです。

次に、ssコマンドを使用して、どのプロセスがポート22でリッスンしているかを確認する方法を見てみましょう。

オプションをチェックすると、ssコマンドに渡したオプションがnetstatに渡したものと同じであることがわかります。,

唯一の違いは、出力をフィルタリングするために余分なgrepプロセスの代わりにssユーティリティの状態フィルタを使用していたことです。

netstatコマンドの出力と同様に、予想されるプロセス情報も最後の列にあります。

lsofを使用する

lsofコマンドは、Linuxシステムで開いているすべてのファイルを一覧表示できます。,

lsofコマンドを使用して、-i:port_numberオプションを使用して特定のポートを使用してプロセスを見つけることができます。

root# lsof -i :22COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAMEsshd 575 root 3u IPv4 19373 0t0 TCP *:ssh (LISTEN)

上記の出力の最初の四つの列は、ポート22でリッスンしているプロセス名とそのPID、所有者、およびファイル記述子を教えてくれます。

lsofコマンドに複数の-i:portを渡して、さまざまなポートでリッスンしているプロセスを見つけることができます。

root# lsof -i :22 -i :68COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAMEsshd 575 root 3u IPv4 19373 0t0 TCP *:ssh (LISTEN)dhcpcd 8822 root 10u IPv4 49601 0t0 UDP *:bootpc

fuserを使用して

fuserユーティリティは、どのプロセスが名前付きファイル、ソケット、またはファイルシステムを使用しているかを表示します。, このpsmiscパッケージをインストールに多くのLinuxのディストリビューションでデフォルトです。

これを使用して、特定のポートで実行されているプロセスの情報を表示できます。 再び、処理リスニングTCPポート22のPIDを見てみましょう:

root# fuser 22/tcp22/tcp: 575

上記の出力はかなり簡単です。 PID575のプロセスがTCPポート22でリッスンしていることがわかっています。

ただし、プロセスに関する詳細な情報は教えてくれません。たとえば、プロセス575の名前は何ですか? プロセスの所有者は誰ですか? というように。,

プロセスの詳細を取得したい場合は、fuserコマンドに”-v”オプションを渡して詳細な出力を得ることができます。

root# fuser -v 22/tcp USER PID ACCESS COMMAND22/tcp: root 575 F.... sshd

fuserコマンドを使用すると、複数のTCPまたはUDPポートで実行されているプロセス情報を一度に確認することもできます。

root# fuser -v 22/tcp 68/udp USER PID ACCESS COMMAND22/tcp: root 575 F.... sshd68/udp: root 8822 F.... dhcpcd

結論

この短い記事では、特定のポートでリッスンしているプロセスの情報を把握するための例を含む四つの異なるlinuxコマンドラインユーティリティを学,

それらはすべて、Linuxのコマンドライン上で私たちの武器に持っている非常に強力なツールです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

ツールバーへスキップ