Как постоянно отслеживать PID, подключающиеся к локальным сокетам?

Как постоянно отслеживать PID, подключающиеся к локальным сокетам?

Некоторыйлокальные процессыподключаемся и отключаемся от 127.0.0.1 через порт 1234.

Я хотел бы регистрировать все соединения с этим портом (или с серверным процессом).

я пробовал

 ss -tpn | grep 1234 

Он показывает список, но затем останавливается; он не регистрирует новые соединения, поэтому я не могу получить сокеты или PID владельца.

Какой инструмент можно использовать для определения PID подключаемых и отключаемых розеток?

решение1

есть инструмент «watch», который это делает, или вы можете
while true; do sleep 2; clear; ss -tulnp | grep 1234 ; done
добавить код в файл и отслеживать его. Это, вероятно, приведет к увеличению использования процессора, но может помочь вам с тем, что вы ищете.
Команда Linux watch

решение2

connectДля мониторинга событий TCP в Linux можно использовать два инструмента :

Разница между ними заключается в том, что первый предоставляет возможности для настройки вывода (например, фильтрацию по PID или номеру порта), тогда как последний является более упрощенным инструментом и не предоставляет дополнительных опций.

В вашем случае самым простым вариантом будет установить bcc и запустить:

tcpconnect.py -P 1234

Если вы устанавливаете эти инструменты с помощью менеджера пакетов вашего дистрибутива, имейте в виду, что некоторые дистрибутивы не помещают tcpconnectих /usr/binи помещают их в другое место, например /usr/share. Поэтому обязательно проверьте, куда ваш дистрибутив помещает эти файлы, если вы не можете их найти.

решение3

Хотя ssвыводит только статистику сокетов, а вам нужно будет имитировать непрерывные дампы (с помощью цикла watchили while), netstatимеет непрерывный режим ( -c).

netstat -ntcp | grep '  127.0.0.1:1234'

Обратите внимание, что два пробела перед 127... — это не опечатка, если вам нужно захватить только клиентский pid.
Пример вывода:

$ netstat -ntcp | grep '  127.0.0.1:1234'
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0      0 127.0.0.1:50146         127.0.0.1:1234          ESTABLISHED 21274/nc            
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0      0 127.0.0.1:50146         127.0.0.1:1234          ESTABLISHED 21274/nc            
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0      0 127.0.0.1:50146         127.0.0.1:1234          ESTABLISHED 21274/nc            
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0      0 127.0.0.1:35720         127.0.0.1:1234          ESTABLISHED 22655/nc            
tcp        0      0 127.0.0.1:50146         127.0.0.1:1234          ESTABLISHED 21274/nc            
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0      0 127.0.0.1:35720         127.0.0.1:1234          ESTABLISHED 22655/nc            
tcp        0      0 127.0.0.1:50146         127.0.0.1:1234          ESTABLISHED 21274/nc

решение4

watch -n 1 -d 'lsof -n -itcp:1234'

не ведение журнала, а мощный мониторинг в реальном времени с подробным описанием...

$ man watch

  • -n 1 - каждую 1 секунду
  • -d — Выделить различия

$ man lsof

  • -n - не разрешать IP-адреса доменам.
  • -itcp:1234 - любой взаимодействует с портом tcp 1234

Связанный контент