如何识别没有pid的进程?


46

我有一个侦听2个端口的进程:45136 / tcp和37208 / udp(实际上,我认为它是同一进程)。但是netstat不会返回任何pid:

netstat -antlp | grep 45136
tcp        0      0 0.0.0.0:45136           0.0.0.0:*           LISTEN      - 

与“ grep 37208”相同的结果。

我也尝试过lsof:

lsof -i TCP:45136

但是它什么也不会返回。这是新安装的挤压程序,我真的不知道该过程可能是什么。任何想法 ?

回答 感谢您的评论,我发现了它的含义。我卸载了nfs-server nfs-common(在dkpg --get-selections | grep nfs搜索之后),未知进程消失了。尽管没有以任何方式标记内核进程,这很奇怪。

再次感谢你们俩。;)

Answers:


56

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

它将显示一个文件,可能会导致您进入一个过程。

参考文献


@derobert-我以为它们是线程。
slm

@slm(用户空间)线程具有PID。
derobert

@derobert-这就是我的想法,但是要仔细检查以确保。
slm

@derobert-我发现了这一点:“ Linux内核本身提供了NFS服务器(又名“ knfsd”)。因此,由于内核不是进程,因此没有关联的进程。
slm

@JohnDoe-可能是因为它们与NFS有关。
slm

16

另一个选择是套接字不属于进程,它属于内核。一个常见的例子是NFS。

Watt:~# netstat -ltp | egrep -- '-[[:space:]]*$'
tcp        0      0 *:nfs                   *:*                     LISTEN      -               
tcp        0      0 *:48131                 *:*                     LISTEN      -               
tcp6       0      0 [::]:55607              [::]:*                  LISTEN      -               
tcp6       0      0 [::]:nfs                [::]:*                  LISTEN      -               

一般来说,我不确定找到这些的好方法。在NFS的特定情况下,rpcinfo通常可以告诉我们:

anthony@Watt:~$ rpcinfo -p | grep 48131
    100021    1   tcp  48131  nlockmgr
    100021    3   tcp  48131  nlockmgr
    100021    4   tcp  48131  nlockmgr

不幸的是,这仅适用于IPv4。要获得v6,您必须先离开off -p,然后以一种愚蠢的方式显示端口号:作为IP地址的两个附加八位字节。端口55607因此变为217.55(因为217  ×256 +  55  = 55607):

anthony@Watt:~$ rpcinfo  | grep -i 217.55
    100021    1    tcp6      ::.217.55              nlockmgr   superuser
    100021    3    tcp6      ::.217.55              nlockmgr   superuser
    100021    4    tcp6      ::.217.55              nlockmgr   superuser

1
感谢您指出rpcinfo -p仅适用于IPv4
youfu
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.