在阅读有关 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
只有一个PID
for 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
在上面的例子中6517和6541是我打开的标签,但像你一样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
直接使用。