Найдите процессы с помощью сетевого интерфейса

Можно использовать, находят для поиска файлов. - исполнительная опция позволяет Вам искать теги (например, find dir -exec getfattr -nuser.tagfoo ';'). Вам нужна поддержка файловой системы getfattr/setfattr. Можно также искать на основе содержания с grep -r foo dir или find dir -exec grep -q foo ';' -exec getfattr ... если Вы хотите объединить его с "тегами".

9
15.09.2012, 21:00
1 ответ

Такие программы будут использовать сокеты Netlink, чтобы говорить с драйвером сетевого оборудования непосредственно. lsof версия 4.85 добавила поддержку сокетов Netlink, но в моем тестировании на CentOS 5.8, функция, кажется, не работает очень хорошо. Возможно, это зависит от опций, добавленных в более новых ядрах.

Однако возможно высказать довольно хорошее предположение о том, когда Вы столкнулись с сокетом Netlink. Если Вы cat /proc/net/netlink Вы добираетесь, список открывают сокеты Netlink, включая PID процессов, которым открыли их. Затем, если Вы lsof -p $THEPID те PIDs, Вы найдете записи с sock в TYPE столбец и can't identify protocol в NAME столбец. Не гарантируется, что это сокеты Netlink, но это - довольно хорошая ставка.

Вы могли бы также вывести, что данный процесс говорит непосредственно с интерфейсом, если он имеет файлы под /sys/class/net/$IFNAME открытый.

Теперь, все, что быть сказанным, я думаю Ваш вопрос, является заблуждающимся.

Скажем, существует команда, которую я не обнаружил. Назовите его lsif -i wlan0, и скажите, что это возвращает список PIDs доступ к именованному интерфейсу. Что Вы смогли бы сделать с ним, который позволит, Вы к "не нарушаете" процессы с помощью того интерфейса, как Вы запросили? Вы были планированием уничтожения всех процессов с помощью того интерфейса сначала? Это является довольно тревожащим.:) Возможно, Вы вместо этого думали, что, отбрасывая интерфейс из нижней части процесс с помощью этого так или иначе будет вредно?

О чем, в конце, так плохо ifconfig wlan0 down?

Сетевые интерфейсы не являются устройствами хранения. Вы не должны сбросить данные к диску и размонтировать их корректно. Не раскрытие сокетов могло бы стоить, но как Вы уже знаете, можно понять это с netstat и lsof. wpa_supplicant движение не должно дуться при возврате его интерфейса просто. (Если это делает, это - ошибка и должно быть зафиксировано; это не указало бы на некоторый ваш отказ.)

Правильно написанные сетевые программы справляются с такими вещами как само собой разумеющееся. Сети ненадежны. Если программа не может справиться с возвращаемым интерфейсом, она также не сможет справиться с отключенными кабелями Ethernet, упрямыми модемами DSL или экскаваторами типа обратная лопата.

12
27.01.2020, 20:06
  • 1
    . Я узнал, что lsof правильно сообщает о сокетах netlink относительно моей системы. Кажется достаточным grep для МАРШРУТА найти процессы, которые я хочу. Поскольку, что я делаю с этой информацией: выяснение у пользователя, должно ли завершение работы быть отменено, если пользователь запустил процессы, связанные с этим интерфейсом. –  ipsec 15.09.2012, 17:04
  • 2
    Существует ли способ узнать, к которому конкретному интерфейсу процессы подключены с? –  ipsec 15.09.2012, 17:36
  • 3
    я не знаю о пути, за исключением straceлуг их, как они запускают, и наблюдающий за bind(2) звонить. –  Warren Young 15.09.2012, 17:49
  • 4
    Можно также использовать любые tun0 "файлы" в proc фс с помощью этой команды: find /proc/ -name tun0 | cut -d\/ -f3 | uniq | xargs -IPID lsof -p PID –  frogstarr78 04.05.2015, 01:51

Теги

Похожие вопросы