Я хотел бы отслеживать порты в «реальном времени» и процессы, которые их используют. Есть ли какой-нибудь инструмент, который может с этим справиться? Я представляю себе что-то вроде top, но со столбцом, в котором перечислены все порты, которые использует процесс ... или список портов, протокола и процесса, у которого этот порт открыт или который слушает.
Это для ОС на базе Linux.
Просто хотел спросить, какая ОС, и заметил, что вы отредактировали, чтобы добавить это. Тогда тебе повезло. Попробуйте этот быстрый и грязный однострочник (как root) в оболочке BASH:
while true ; do output=$(netstat -anptu) ; clear ; echo "$output" ; sleep 2 ; done
изменить: более сжатый, упорядоченный вывод:
while true ; do output=$( (netstat -anpt | awk '{ print $1" "$4" "$7" "$6 }' | tail -n +3 ; netstat -anpu | awk '{ print $1" "$4" "$6 }' | tail -n +3 ) | egrep '[0-9]\/' | sort | uniq) ; clear ; date ; echo "$output" ; sleep 2 ; done
Почему бы никому не предложить -c
вариант для netstat
.
Добавить -c
к вашему существующему netstat
команда, и она покажет вам результат в реальном времени.
Вы не указали ОС. Но если это Linux (что, я думаю, вероятно, поскольку вы упомянули top
), то существует инструмент под названием iftop
, который может отображать текущее использование полосы пропускания по IP-адресу. Это не совсем то, о чем вы просили, но в зависимости от ваших потребностей может быть достаточно близко.
Через некоторое время я обнаружил nethogs
, это именно то, что мне было нужно в первую очередь:
Ему нужно имя устройства в качестве первого параметра, и он должен запускаться как sudo: sudo nethogs wlp9s0
смотреть на -i
и -p
варианты lsof инструмент:
watch lsof -a -itcp -p <PID>