Linux, netstat: как отобразить владельца программ, использующих порты?
Я схожу с ума от команды netstat
,
В человеке мы можем прочитать, что при выводе Active Internet Connections (TCP, UDP, raw) мы должны иметь:
Пользователь: имя пользователя или идентификатор пользователя (UID) владельца сокета.
Но, когда я делаю
netstat -natp
мой вывод не показывает владельца (или UID)
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:4713 0.0.0.0:* LISTEN 2159/pulseaudio
(...)
и я не вижу никакой опции в человеке, чтобы отобразить владельца PID.
Здесь --numeric-users
вариант, но это ничего не меняет.
Я что-то упускаю? Или что-то не так с netstat?
Есть ли другой способ получить эту информацию?
Спасибо за вашу помощь:)
2 ответа
Решение
Использование netstat -natpe
,
Со страницы руководства:
-e, --extend
Display additional information. Use this option twice for maximum detail.
Как ясно, как грязь.
Который добавит две колонки, User и Inode на дисплей.
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State User Inode PID/Program name
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 100 13119 1901/mysqld
В качестве альтернативы, вы можете использовать lsof -i
который показывает вам пользователя.
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
httpd 32500 apache 4u IPv6 14390 0t0 TCP *:http (LISTEN)
httpd 32501 apache 4u IPv6 14390 0t0 TCP *:http (LISTEN)
httpd 32502 apache 4u IPv6 14390 0t0 TCP *:http (LISTEN)
httpd 32503 apache 4u IPv6 14390 0t0 TCP *:http (LISTEN)