netstat
那里有一个过程,您的用户名不知道它是什么。这是一层保护,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
ss
如果您没有任何运气,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))
进程ID还在那里吗?
在某些情况下,根本没有与正在使用的TCP端口关联的PID。您可以在@derobert的答案中了解有关NFS 的信息,这是其中之一。还有其他 我有使用ssh隧道连接回IMAP等服务的实例。这些也在没有进程ID的情况下显示。
无论如何,您都可以使用更详细的形式,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
它将显示一个文件,可能会导致您进入一个过程。
参考文献