Назад | Перейти на главную страницу

Как определить, какие порты TCP / UDP открываются данным процессом (Linux)?

Я знаю, как сделать обратное (выяснить, в каком процессе открыт данный порт) с помощью lsof или netstat, но обширные исследования в Google не помогли мне решить обратную проблему.

Я знаю, что могу использовать netstat -np в сочетании с некоторыми командами grep и sed, но это кажется хакерским. Есть ли обратная версия «lsof -i tcp: 80», которая покажет мне все локальные порты, открытые данным процессом?

Взгляните на страницу руководства, вы обнаружите, что можете использовать -p возможность указать идентификатор процесса, а -i возможность ограничить отображение сокетами интернет-домена (-i4 только для ipv4 и -i6 только для ipv6). Итак, если связать их вместе ...

lsof -p <pid> -i

... вы получаете не совсем то, что хотите, потому что по умолчанию lsof воля или вместе ваши запросы. Так что добавьте -a (и) флаг ...

lsof -p <pid> -a -i

... и вы получите список сокетов IPv4, открытых указанным идентификатором процесса.

Я знаю, что могу использовать netstat -np в сочетании с некоторыми grep и sed, но это кажется хакерским.

Как насчет этого:

# netstat --inet -nlp | grep <processname>

Есть ли обратная версия lsof -i tcp:80 который покажет мне все локальные порты, открытые данным процессом?

# lsof -c <processname> | grep LISTEN