ネットワークインタフェースを使用したプロセスの検索

ネットワークインタフェースを使用したプロセスの検索

プロセスを中断せずにネットワークインターフェイスを安全にシャットダウンする方法を見つけようとしています。そのためには、現在どのプロセスがインターフェイスを使用しているかを調べる必要があります。ss、またはその他のツールは、ソケットが開いているがnetstat表示lsofされないプロセスを表示するのに役立ちます。その他のツールもwpa_supplicantありますdhcpcdhostapd

これらのプロセスを普遍的に検出する方法はありますか? dhcpcdは時々ソケットを開くプログラムなので、おそらく動作しません。しかし、 wpa_supplicant と hostapd が検出可能なインタフェースに対して「何かを実行」し、関連する PID を引き起こす可能性があると仮定します。

答え1

これらのプログラムはネットワークリンクソケットネットワークハードウェアドライバと直接会話してください。lsofバージョン 4.85次へ追加Netlinkソケットはサポートされていますが、CentOS 5.8でテストした結果、この機能が正しく動作しないようです。おそらく、新しいカーネルに追加された機能によって異なります。

しかし、Netlinkソケットを見つければ良い推測をすることができます。開いているNetlinkソケットのリストを取得したら、cat /proc/net/netlinkそのソケットを開いたプロセスのPIDを含めます。その後、これらのPIDを使用すると、列と列でlsof -p $THEPID項目を見つけることができます。 Netlinkソケットという保証はありませんが、良い選択です。sockTYPEcan't identify protocolNAME

また、特定のプロセスに開かれたファイルがある場合は、そのプロセスがインターフェースと直接通信していると推測することもできます/sys/class/net/$IFNAME

そういえば、あなたの質問が間違っているようです。

私がまだ発見していない命令があるとしましょう。これを呼び出しlsif -i wlan0て、指定されたインターフェイスにアクセスするPIDのリストを返すと言います。必要に応じてインターフェイスを使用するプロセスを「邪魔しない」ようにするにはどうすればよいですか?まず、インターフェイスを使用するすべてのプロセスを終了する予定ですか?本当に混乱しています。 :) おそらく、インターフェイスを使用してプロセスの下からインターフェイスを削除することは、いくつかの点で有害であると思いますか?

何がそんなに悪いですかifconfig wlan0 down

ネットワークインタフェースはストレージデバイスではありません。データをディスクにフラッシュして正常に削除する必要はありません。開いたソケットを破壊しないことはおそらく価値があるでしょう。ただし、ご存知のように、andをnetstat使用してこの問題を解決できますlsofwpa_supplicant無意識のうちにインターフェースに戻っても、うるさくなりません。 (そうであればバグなので、修正する必要があります。これはユーザー側で間違った点を示していません。)

よく書かれたネットワークプログラムは、これらのことを当然に処理することができます。ネットワークが不安定です。プログラムが壊れたインターフェイスを処理できない場合は、プラグインされたイーサネットケーブル、不安定なDSLモデム、または問題を処理できません。掘削機

関連情報