NetStat
Там есть процесс, ваш ID пользователя просто не знаком с тем, что это такое. Это уровень защиты, lsof
который позволяет вам не видеть это. Просто повторите команду, но sudo
вместо этого добавьте к ней префикс .
$ sudo netstat -antlp | grep 45136
Есть даже предупреждение об этом в выводе lsof
вверху.
(Не все процессы могут быть идентифицированы, информация о не принадлежащих процессах не будет показана, вам нужно быть пользователем root, чтобы увидеть все это.)
пример
$ netstat -antlp | grep 0:111
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN -
$ sudo netstat -antlp | grep 0:111
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1248/rpcbind
сс
Если вам не повезет, netstat
возможно ss
, сойдет. Вы все еще должны будете использовать sudo
, и вывод может быть немного более загадочным.
пример
$ ss -apn|grep :111
LISTEN 0 128 :::111 :::*
LISTEN 0 128 *:111 *:*
$ sudo ss -apn|grep :111
LISTEN 0 128 :::111 :::* users:(("rpcbind",1248,11))
LISTEN 0 128 *:111 *:* users:(("rpcbind",1248,8))
Идентификатор процесса еще не там?
Есть случаи, когда просто нет PID, связанного с используемым портом TCP. Вы можете прочитать о NFS в ответе @ derobert , который является одним из них. Есть и другие. У меня есть случаи, когда я использую ssh-туннели для подключения к таким службам, как IMAP. Они также отображаются без идентификатора процесса.
В любом случае вы можете использовать более подробную форму, netstat
которая может пролить дополнительный свет на то, какой процесс в конечном итоге использует порт TCP.
$ netstat --program --numeric-hosts --numeric-ports --extend
пример
$ netstat --program --numeric-hosts --numeric-ports --extend |grep -- '-' | head -10
Proto Recv-Q Send-Q Local Address Foreign Address State User Inode PID/Program name
tcp 0 0 192.168.1.103:936 192.168.1.3:60526 ESTABLISHED root 160024310 -
tcp 0 0 192.168.1.1:2049 192.168.1.3:841 ESTABLISHED sam 159941218 -
tcp 0 0 127.0.0.1:143 127.0.0.1:57443 ESTABLISHED dovecot 152567794 13093/imap-login
tcp 0 0 192.168.1.103:739 192.168.1.3:2049 ESTABLISHED root 160023970 -
tcp 0 0 192.168.1.103:34013 192.168.1.3:111 TIME_WAIT root 0 -
tcp 0 0 127.0.0.1:46110 127.0.0.1:783 TIME_WAIT root 0 -
tcp 0 0 192.168.1.102:54891 107.14.166.17:110 TIME_WAIT root 0 -
tcp 0 0 127.0.0.1:25 127.0.0.1:36565 TIME_WAIT root 0 -
tcp 0 0 192.168.1.1:2049 192.168.1.6:798 ESTABLISHED tammy 152555007 -
Если вы заметили, что вывод включает INODES, чтобы мы могли вернуться к процессу, используя эту информацию.
$ find -inum 152555007
Который покажет вам файл, который может привести вас к процессу.
Рекомендации
Другой вариант заключается в том, что сокет не принадлежит процессу, он принадлежит ядру. Одним из распространенных примеров этого является NFS.
В общем, я не уверен, что это хороший способ определить это. В частном случае NFS,
rpcinfo
часто будет в состоянии сказать нам:К сожалению, это работает только для IPv4. Чтобы получить v6, вы должны выйти
-p
, который затем глупо отображает номера портов: как два дополнительных октета IP-адреса. Порт 55607, таким образом, становится 217,55 (потому что 217 × 256 + 55 = 55607):источник
rpcinfo -p
работает только для IPv4