このようなプログラムは、Netlinkソケットを使用して、ネットワークハードウェアのドライバーと直接通信します。lsof
バージョン4.85 はNetlinkソケットのサポートを追加しましたが、CentOS 5.8での私のテストでは、機能があまりうまく機能していないようです。おそらくそれは、新しいカーネルに追加された機能に依存します。
ただし、いつNetlinkソケットに遭遇したかをかなり推測することは可能です。cat /proc/net/netlink
開いているNetlinkソケットのリスト(それらを開いているプロセスのPIDを含む)を取得した場合。もしあれば、lsof -p $THEPID
それらのPID、あなたがエントリを見つけるsock
にはTYPE
、列とcan't identify protocol
でNAME
コラム。これらがNetlinkソケットであることは保証されていませんが、かなり良い方法です。
また、/sys/class/net/$IFNAME
開いているファイルがある場合、特定のプロセスがインターフェイスと直接通信していると推測することもできます。
さて、以上のことをすべて述べたので、あなたの質問は間違った方向に進んでいると思います。
まだ発見していないコマンドがあるとしましょう。それを呼び出しlsif -i wlan0
、名前付きインターフェースにアクセスするPIDのリストを返すと言います。あなたが要求したように、そのインターフェイスを使用してプロセスを「邪魔しない」ことを可能にする、それで何ができるでしょうか?最初にそのインターフェースを使用してすべてのプロセスを終了することを計画していましたか?それはかなり不安です。:)代わりに、それを使用しているプロセスの下からインターフェイスを削除すると、なんらかの害があると考えていたのではないでしょうか。
結局、何がそんなに悪いのifconfig wlan0 down
ですか?
ネットワークインターフェイスはストレージデバイスではありません。データをディスクにフラッシュして、正常にアンマウントする必要はありません。オープンソケットを壊していないことは価値があるかもしれませんが、あなたが既に知っているとして、あなたがそれを把握することができますnetstat
とlsof
。wpa_supplicant
あなたがそのインターフェースを無秩序にバウンスした場合、不機嫌になることはありません。(もしそうなら、それはバグであり、修正する必要があります。それはあなたのいくつかの欠陥を示すものではありません。)
よく書かれたネットワークプログラムは当然のことなどに対応しています。ネットワークは信頼できません。バウンスされるインターフェースにプログラムが対応できない場合、プラグが外れているイーサネットケーブル、不安定なDSLモデム、またはバックホーに対応することもできません。