У меня очень старая (не спрашиваю почему) BusyBox (BusyBox v1.01 (2008.12.19-21: 31 + 0000) Встроенная оболочка (ясень)) на моем DreamBox. Я хотел бы узнать, какой процесс открыл какое соединение, используя netstat. Но я обнаружил, что netstat BusyBox не содержит опцию -p . Какие еще есть возможности, чтобы узнать, какой процесс открыл (и использует) соответствующий сокет?
10
Ответы:
Вы можете найти эквивалентную информацию в несколько более уродливой форме (она же шестнадцатеричная) в
/proc/net/tcp
. Там вы можете найти индекс соединения, под которым вы можете посмотреть/proc/$pid/fd/
.Например:
(В обычном netstat, но не в netstat busybox, эта
-e
опция также дает вам дополнительную информацию.)и
Вам нужен root-доступ для второго шага.
Не так удобно, как
-p
вариант, очевидно, но работает в безвыходном положении. Может быть в сценарии, если это необходимо.источник
6115
и использовать это так:find /proc/ -type l | grep /fd/ | xargs ls -la 2>/dev/null | grep 6115
Это может не помочь, если у вас нет возможности восстановить Busybox, но если это кому-нибудь поможет ...
Busybox имеет опцию конфигурации для поддержки
-p
переключения Busyboxnetstat
. См.CONFIG_FEATURE_NETSTAT_PRG
Параметр, выбранный в параметрах меню busybox через Сетевые утилиты → netstat → Включить вывод PID / имени программы .источник
Если у вас есть или вы можете получить
ss
на вашем устройстве, он может показать вам PID:источник