Tali programmi utilizzeranno i socket Netlink per comunicare direttamente con il driver dell'hardware di rete. lsof
la versione 4.85 ha aggiunto il supporto per i socket Netlink, ma nei miei test su CentOS 5.8, la funzionalità non sembra funzionare molto bene. Forse dipende dalle funzionalità aggiunte nei kernel più recenti.
Tuttavia, è possibile fare una buona ipotesi su quando ci si imbatte in un socket Netlink. Se si cat /proc/net/netlink
ottiene un elenco di socket Netlink aperti, incluso il PID dei processi che li hanno aperti. Quindi se lsof -p $THEPID
questi PID, troverai le voci con sock
nella TYPE
colonna e can't identify protocol
nella NAME
colonna. Non è garantito che si tratti di prese Netlink, ma è una scommessa abbastanza buona.
Si potrebbe anche dedurre che un determinato processo sta parlando direttamente a un'interfaccia se i file sono /sys/class/net/$IFNAME
aperti.
Ora, tutto ciò che è stato detto, penso che la tua domanda sia sbagliata.
Diciamo che c'è un comando che non ho scoperto. Chiamalo lsif -i wlan0
e dì che restituisce un elenco di PID che accedono all'interfaccia denominata. Cosa saresti in grado di fare con esso che ti permetterebbe di "non disturbare" i processi usando quell'interfaccia, come hai richiesto? Stavi pensando di uccidere tutti i processi usando prima quell'interfaccia? È abbastanza inquietante. :) Forse stavi invece pensando che abbandonare l'interfaccia da sotto un processo utilizzandolo sarebbe in qualche modo dannoso?
Alla fine, cosa c'è di così brutto ifconfig wlan0 down
?
Le interfacce di rete non sono dispositivi di archiviazione. Non è necessario scaricare i dati sul disco e smontarli con grazia. Non rompere le prese aperte potrebbe essere utile, ma come già sai, puoi capirlo con netstat
e lsof
. wpa_supplicant
non farà il broncio se fai rimbalzare la sua interfaccia senza tante cerimonie. (Se lo fa, è un bug e deve essere risolto; non indicherebbe un tuo errore.)
Programmi di rete ben scritti affrontano cose come una cosa ovvia. Le reti non sono affidabili. Se un programma non è in grado di far fronte a un'interfaccia rimbalzata, inoltre non sarà in grado di far fronte a cavi Ethernet scollegati, modem DSL ingombranti o backhoes .