PID 与 Chromium 的多个选项卡和窗口相关联?

PID 与 Chromium 的多个选项卡和窗口相关联?

在阅读有关 Linux 的文章时,我得到了一个方法$netstat -tulpn来找出哪个进程正在监听端口。我得到了:

anupam@JAZZ:~$ sudo netstat -tulpn
[sudo] password for anupam: 
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 127.0.1.1:53            0.0.0.0:*               LISTEN      1827/dnsmasq    
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      1992/cupsd      
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      976/mysqld      
tcp6       0      0 :::80                   :::*                    LISTEN      1342/apache2    
tcp6       0      0 ::1:631                 :::*                    LISTEN      1992/cupsd      
tcp6       0      0 :::3689                 :::*                    LISTEN      2582/rhythmbox  
udp        0      0 0.0.0.0:631             0.0.0.0:*                           943/cups-browsed
udp        0      0 0.0.0.0:37759           0.0.0.0:*                           697/avahi-daemon: r
udp        0      0 0.0.0.0:58502           0.0.0.0:*                           1822/dhclient   
udp        0      0 0.0.0.0:5353            0.0.0.0:*                           3039/chromium-brows
udp        0      0 0.0.0.0:5353            0.0.0.0:*                           697/avahi-daemon: r
udp        0      0 127.0.1.1:53            0.0.0.0:*                           1827/dnsmasq    
udp        0      0 0.0.0.0:68              0.0.0.0:*                           1822/dhclient   
udp6       0      0 :::5353                 :::*                                697/avahi-daemon: r
udp6       0      0 :::44452                :::*                                697/avahi-daemon: r
udp6       0      0 :::16540                :::*                                1822/dhclient   

只有一个PIDfor googleChromium,而我在其中打开了多个窗口和多个选项卡。我读到 chromium 使用进程而不是线程http://blog.chromium.org/2008/09/multi-process-architecture.html,因为端口号用于应用程序到应用程序的连接(所以我理解 Chromium 只有一个 PID)。但是与 Chromium 相关的其他进程的 PID 又如何呢?

答案1

Chromium 浏览器确实使用不同的流程来呈现你打开的标签页:

$ps -aef
[...]
sylvain   6432  2223 20 11:19 ?        00:00:02 chromium-browser --enable-pinch                          
sylvain   6441  6432  0 11:19 ?        00:00:00 /usr/lib/chromium-browser/chrome-sandbox /usr/lib/chromium-browser/chromium-browser --type=zygote
sylvain   6442  6441  1 11:19 ?        00:00:00 chromium-browser --type=zygote                          
sylvain   6446  6442  0 11:19 ?        00:00:00 chromium-browser --type=zygote                          
sylvain   6469  6432  8 11:19 ?        00:00:00 chromium-browser --type=gpu-process --channel=6432.0.2058149686 --supports-dual-gpus=false --gpu-driver-bug-workarounds=1,11,13,15 --disable-accelerated-video-decode --gpu-vendor-
sylvain   6489  6446  1 11:19 ?        00:00:00 /usr/lib/chromium-browser/chro                          
sylvain   6509  6469  0 11:19 ?        00:00:00 chromium-browser --type=gpu-broker                                                                                                                                                 
root      6516     2  0 11:19 ?        00:00:00 [kworker/0:0]
sylvain   6517  6446 10 11:19 ?        00:00:00 /usr/lib/chromium-browser/chro                          
sylvain   6541  6446  5 11:20 ?        00:00:00 /usr/lib/chromium-browser/chro 

在上面的例子中65176541是我打开的标签,但像你一样netstat只返回一个 Chromium 网络进程(6432):

$ sudo netstat -tulpn
[sudo] password for sylvain: 
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 127.0.1.1:53            0.0.0.0:*               LISTEN      1966/dnsmasq    
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      3804/cupsd      
tcp        0      0 0.0.0.0:538             0.0.0.0:*               LISTEN      1363/gdomap     
tcp6       0      0 ::1:631                 :::*                    LISTEN      3804/cupsd      
udp        0      0 0.0.0.0:45410           0.0.0.0:*                           2158/dhclient   
udp        0      0 0.0.0.0:5353            0.0.0.0:*                           6432/chromium-brows
udp        0      0 0.0.0.0:5353            0.0.0.0:*                           933/avahi-daemon: r
udp        0      0 127.0.1.1:53            0.0.0.0:*                           1966/dnsmasq    
udp        0      0 0.0.0.0:68              0.0.0.0:*                           2158/dhclient   
udp        0      0 0.0.0.0:68              0.0.0.0:*                           1715/dhclient   
udp        0      0 192.168.1.36:123        0.0.0.0:*                           2956/ntpd       
udp        0      0 192.168.1.40:123        0.0.0.0:*                           2956/ntpd       
udp        0      0 127.0.0.1:123           0.0.0.0:*                           2956/ntpd       
udp        0      0 0.0.0.0:123             0.0.0.0:*                           2956/ntpd       
udp        0      0 0.0.0.0:49400           0.0.0.0:*                           933/avahi-daemon: r
udp        0      0 0.0.0.0:538             0.0.0.0:*                           1363/gdomap     
udp        0      0 0.0.0.0:631             0.0.0.0:*                           1187/cups-browsed
udp        0      0 0.0.0.0:10080           0.0.0.0:*                           1715/dhclient   
udp6       0      0 :::60417                :::*                                933/avahi-daemon: r
udp6       0      0 :::5353                 :::*                                933/avahi-daemon: r
udp6       0      0 :::47845                :::*                                2158/dhclient   
udp6       0      0 :::8012                 :::*                                1715/dhclient   
udp6       0      0 fe80::3ea9:f4ff:fe1:123 :::*                                2956/ntpd       
udp6       0      0 fe80::3e97:eff:fe81:123 :::*                                2956/ntpd       
udp6       0      0 ::1:123                 :::*                                2956/ntpd       
udp6       0      0 :::123                  :::*                                2956/ntpd  

所以为什么?

  • Chromium 使用多进程架构,将渲染进程与浏览器进程隔离...
  • 铬保持单实例资源调度程序由所有渲染进程共享,并在浏览器内核进程中运行。
  • 每个渲染进程通过IPC与资源调度器进行通信。

资料来源:

答案2

您可以使用pgrep -P 3039获取 Chromium 的所有子进程 ID。然后您可以使用ps -p "$child_pids"获取有关它们的信息。或者ps --ppid 3039直接使用。

相关内容