Solche Programme verwenden Netlink-Sockets , um direkt mit dem Treiber der Netzwerkhardware zu kommunizieren . lsof
Version 4.85 fügte Unterstützung für Netlink-Sockets hinzu, aber in meinen Tests unter CentOS 5.8 scheint die Funktion nicht sehr gut zu funktionieren. Vielleicht hängt es von Funktionen ab, die in neueren Kerneln hinzugefügt wurden.
Es ist jedoch möglich, eine ziemlich gute Vermutung anzustellen, wann Sie auf einen Netlink-Socket gestoßen sind. Wenn Sie cat /proc/net/netlink
eine Liste der geöffneten Netlink-Sockets erhalten, einschließlich der PID der Prozesse, in denen sie geöffnet sind. Wenn Sie lsof -p $THEPID
diese PIDs verwenden, finden Sie Einträge mit sock
in der TYPE
Spalte und can't identify protocol
in der NAME
Spalte. Es ist nicht garantiert, dass dies Netlink-Sockets sind, aber es ist eine ziemlich gute Wette.
Sie können auch darauf schließen, dass ein bestimmter Prozess direkt mit einer Schnittstelle kommuniziert, wenn Dateien /sys/class/net/$IFNAME
geöffnet sind.
Nach all dem denke ich, dass Ihre Frage falsch ist.
Angenommen, es gibt einen Befehl, den ich nicht entdeckt habe. Rufen Sie es auf lsif -i wlan0
und sagen Sie, es gibt eine Liste von PIDs zurück, die auf die benannte Schnittstelle zugreifen. Was könnten Sie damit tun, um Prozesse über diese Schnittstelle, wie Sie es gewünscht haben, nicht zu stören? Wollten Sie zuerst alle Prozesse über diese Schnittstelle abbrechen? Das ist ziemlich beunruhigend. :) Vielleicht haben Sie stattdessen gedacht, dass das Herausfallen der Benutzeroberfläche unter einem Prozess, der sie verwendet, irgendwie schädlich wäre?
Worum geht es am Ende so schlecht ifconfig wlan0 down
?
Netzwerkschnittstellen sind keine Speichergeräte. Sie müssen keine Daten auf die Festplatte leeren und die Bereitstellung ordnungsgemäß aufheben. Es mag sich lohnen, keine Steckdosen aufzubrechen, aber wie Sie bereits wissen, können Sie dies mit netstat
und herausfinden lsof
. wpa_supplicant
wird nicht schmollen, wenn Sie seine Schnittstelle kurzerhand abprallen. (Wenn dies der Fall ist, handelt es sich um einen Fehler, der behoben werden muss. Dies würde keinen Fehler von Ihnen anzeigen.)
Gut geschriebene Netzwerkprogramme bewältigen solche Dinge selbstverständlich. Netzwerke sind unzuverlässig. Wenn ein Programm nicht damit umgehen kann, dass eine Schnittstelle zurückgeworfen wird, kann es auch nicht mit nicht angeschlossenen Ethernet-Kabeln, balkigen DSL-Modems oder Baggern umgehen .
strace
fehlt ihnen, wenn sie anfangen, und ich schaue auf denbind(2)
Anruf.find /proc/ -name tun0 | cut -d\/ -f3 | uniq | xargs -IPID lsof -p PID