Dichos programas utilizarán sockets Netlink para comunicarse directamente con el controlador del hardware de la red. lsof
la versión 4.85 agregó soporte para sockets Netlink, pero en mis pruebas en CentOS 5.8, la característica no parece funcionar muy bien. Quizás depende de las características agregadas en los núcleos más nuevos.
Sin embargo, es posible hacer una suposición bastante buena sobre cuándo te has encontrado con un socket de Netlink. Si cat /proc/net/netlink
obtiene una lista de sockets abiertos de Netlink, incluido el PID de los procesos que los tienen abiertos. Luego, si tiene lsof -p $THEPID
esos PID, encontrará entradas con sock
en la TYPE
columna y can't identify protocol
en la NAME
columna. No se garantiza que estos son sockets Netlink, pero es una apuesta bastante buena.
También puede inferir que un proceso dado está hablando directamente con una interfaz si tiene archivos /sys/class/net/$IFNAME
abiertos.
Ahora, dicho todo esto, creo que su pregunta está equivocada.
Digamos que hay un comando que no he descubierto. Llámelo lsif -i wlan0
y diga que devuelve una lista de PID que acceden a la interfaz nombrada. ¿Qué podría hacer con él que le permitiera "no molestar" los procesos utilizando esa interfaz, como lo solicitó? ¿Planeabas acabar con todos los procesos usando esa interfaz primero? Eso es bastante inquietante. :) ¿Tal vez estabas pensando que quitar la interfaz de debajo de un proceso que la usa de alguna manera sería perjudicial?
¿Qué tiene de malo al final ifconfig wlan0 down
?
Las interfaces de red no son dispositivos de almacenamiento. No tiene que vaciar datos en el disco y desmontarlos con gracia. Puede que no valga la pena romper los enchufes abiertos, pero como ya sabe, puede resolverlo con netstat
y lsof
. wpa_supplicant
no va a ponerse de mal humor si rebota su interfaz sin ceremonias. (Si lo hace, es un error y necesita ser reparado; no indicaría alguna falla tuya).
Los programas de red bien escritos hacen frente a tales cosas como algo natural. Las redes no son confiables. Si un programa no puede hacer frente al rebote de una interfaz, tampoco podrá hacer frente a cables Ethernet desconectados, módems DSL o retroexcavadoras .
strace
ellos cuando se inician, y esperando labind(2)
llamada.find /proc/ -name tun0 | cut -d\/ -f3 | uniq | xargs -IPID lsof -p PID