Я запускаю несколько разных сервисов через моно, каждый на своем собственном порту, но когда я использую netstat для проверки, кто назначил порт, а какой нет, все, что я получаю, это 2 процесса, называемых "моно", невозможно сказать что, помимо просмотра порта, иногда может меняться.

Можно ли заставить netstat показывать "команду" для каждого порта, как это делает htop для процессов?

Таким образом, я могу сказать, что это за процесс.

1 ответ1

1

Это заняло немного времени, но мне удалось создать фильтр для добавления списка параметров программы:

netstat -p | while l="$(line)";\
  do p="$(sed -En 's/^.*( [0-9]+)\/[^ ]*.*/\1/gp'<<<"$l")";\
     [ "$p" == "" ] || p=" ## $(ps -p $p -o cmd=)";\
     echo "$l"$p;\
  done

Заметки:

  • Очевидно, вы не будете вводить это каждый раз: поместите код фильтра в функцию или скрипт (в этом случае завершающий символ ;\ строки не нужны).
  • Из-за буферизации, когда netstat записывает в канал, происходит задержка, прежде чем фильтр начнет обрабатывать строки.
  • По той же причине существует вероятность того, что программа прекратит работу или exec другую, когда netstat выводит строку и ps получает аргументы для PID.
  • Путь к программе не будет отображаться, если он не был указан при запуске программы, поскольку ps показывает arg0 из строки выполнения программы.
  • Не во всех системах есть команда line : если вы заменяете while l=($line) более обычным while read -r l , это урезает начальные и конечные пробелы; когда вам нужно сохранить их, вы можете использовать while read -r с $REPLY заменяющим $l (или while read -r; do l="$REPLY"; ... для точного эквивалента, с $l без изменений).
  • Фильтр работает, читая строку из netstat , используя sed для извлечения PID из любой последовательности чисел / строк , а затем используя ps -p для этого PID, чтобы найти параметры команды.
  • В последнем echo "$l"$p , $p находится вне кавычек: это должно удалить конечные пробелы (также проблема с программами wine ), но это будет иметь побочный эффект сжатия нескольких пробелов в параметрах до единое пространство

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .