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
Есть один PID
за googleChromium
, в то время как я открыл несколько окон и несколько вкладок в нем. Я читал, что Chromium использует процессы, а не потоки http://blog.chromium.org/2008/09/multi-process-architecture.html, так как номера портов используются для соединения приложения с приложением (поэтому я понимаю, что существует один PID для хрома). Но как насчет PID для других процессов, связанных с хромом?
2 ответа
Браузер 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
В приведенном выше примере pid 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 использует многопроцессную архитектуру, которая изолирует процессы рендеринга от процесса браузера, но...
- Chromium поддерживает один экземпляр диспетчера ресурсов, который используется всеми процессами рендеринга и выполняется в процессе ядра браузера.
- Каждый процесс рендеринга связывается с диспетчером ресурсов через IPC.
Источники:
Ты можешь использовать pgrep -P 3039
чтобы получить все идентификаторы дочерних процессов Chromium. Тогда вы можете использовать ps -p "$child_pids"
чтобы получить информацию о них. Или использовать ps --ppid 3039
непосредственно.