ウェブサイト検索

Linuxでプロセスのネットワーク使用状況を監視する方法


Linux PCで現在アクティブなすべてのプロセスのネットワーク使用状況を確認したいですか?これらのオープンソースツールを使えば簡単です。

インターネットアクセスは不可欠ですが、コンピュータ上でどのLinuxプロセスがあなたの接続を最も使用しているか疑問に思うかもしれません。幸いなことに、いくつかの一般的なLinuxユーティリティを使えば、どのプロセスがあなたの帯域幅を使用しているかを簡単に監視できます。ここにそれらのいくつかがあります:

1. nethogs

nethogsは、インターネット接続に対してhtopやtopがCPUやメモリ使用に対して行うことをするプログラムです。どのプロセスがネットワークにアクセスしているかのスナップショットを表示します。

topやhtop、atopのように、nethogsは全画面プログラムで、数秒ごとに更新され、プロセスによる現在のネットワーク接続を表示します。

nethogsのインストールは簡単です。あなたは単にパッケージマネージャを通じて進むだけです。

例えば、DebianとUbuntuでは:

sudo apt install nethogs

そして、Arch Linuxでは:

sudo pacman -S nethogs

レッドハットファミリーについて:

sudo dnf install nethogs

nethogsを実行するには、root権限が必要です。

sudo nethogs

このコマンドを使用して、通常のユーザーとしてnethogsを実行できるように設定することが可能です:

sudo setcap "cap_net_admin,cap_net_raw+pe" /path/to/nethogs

「/path/to/nethogs」をnethogsの絶対パスに置き換える必要があります。これはwhichコマンドで見つけることができます:

which nethogs

2. lsof

lsofはオープンファイルをリストするためのユーティリティですが、オープンネットワーク接続もリストすることができます。-iオプションは、システム上で実行中のプロセスに接続されたインターネット接続をリストします。結局のところ、Linuxではすべてがファイルです。

現在のインターネット接続を確認するには、このコマンドを使用してください:

lsof -i

lsofは、オープンなインターネット接続を持つコマンドの名前、PID、ファイルディスクリプタ、インターネット接続の種類、サイズ、プロトコル、および接続の正式なファイル名を示します。

-i4 および -i6 オプションを使用すると、IPv4 または IPv6 を使用して接続を表示できます。

おそらく、すでにlsofがインストールされている可能性が高いです。もしインストールされていなければ、主要なLinuxディストリビューションで簡単にインストールできます。

Debian および Ubuntu では、次のように入力します:

sudo apt install lsof

そしてArchでは:

sudo pacman -S lsof

Red Hat系ディストリビューションについて:

sudo dnf install lsof

3. netstat

netstatは独自に強力なプログラムで、システム上のネットワーク接続を表示します。しかし、ネットワーク接続がどのプロセスに関連付けられているかは表示しません。lsofと同様に、コマンドラインオプションを使用することでこれを見ることができます。

netstat は net-tools パッケージの一部です。ほとんどの Linux ディストリビューションでは、デフォルトのパッケージマネージャを使用してインストールできます。

例えば、DebianやUbuntuでは:

sudo apt install net-tools

Arch Linuxで:

sudo pacman -S net-tools

Fedora、CentOS、およびRHELにnetstatをインストールするには、以下のコマンドを実行します:

sudo dnf install net-tools

コマンドラインでnetstatを実行できます。デフォルトでは、プロトコル、アドレス、接続の状態などの情報が表示されますが、-pオプションを使用すると、プロセスIDとコマンド名を表示する列が追加されます。

netstat -p

実行すると、netstatはすべてのネットワーク接続を一覧表示し、その後終了します。-cオプションを使用すると、接続の継続的に更新されるリストを見ることができます:

netstat -pc

これはnethogsのような画面指向のプログラムを使用することに似ていますが、こうする利点は、出力をgrepやページャーのような別のプログラムにパイプして調べることができることです。

netstat -p | grep 'systemd'

システム上のネットワーク接続を持つすべてのプロセスを見るには、rootとしてnetstatを実行する必要があります:

sudo netstat 

今、どのLinuxアプリがあなたの帯域幅を消費しているかを見ることができます。

Linuxは、多くの現代のOSと同様に、インターネットと密接に関連しています。どのプロセスが帯域幅を使用しているのかを追跡するのは時には難しい場合があります。nethogs、lsof、netstatなどのツールを使用すれば、オープン接続を持つプロセスを特定することができます。

プロセスは時々おかしくなり、接続があってもそうなります。Linuxでは、どんな悪質なプロセスでも簡単に終了できます。

関連記事: