Isso provavelmente será um tópico. No Linux, os encadeamentos possuem um ID de processo diferente para os outros encadeamentos no processo. Quando você olha para a coluna PID em ps
, na verdade você está olhando para o ID do grupo de segmentos (TGID), que é comum entre todos os segmentos em um processo. Isto é por razões históricas devido à forma como os tópicos evoluíram no Linux.
Por exemplo, no meu sistema, o cromo tem vários segmentos em um processo (vários processos também):
$ ps -efL | grep chromium
[UID PID PPID LWP C NLWP STIME TTY TIME CMD]
[...]
camh 10927 5182 10927 0 4 11:07 ? 00:00:00 /usr/lib/chromium/chromium ...
camh 10927 5182 10929 0 4 11:07 ? 00:00:00 /usr/lib/chromium/chromium ...
camh 10927 5182 10930 0 4 11:07 ? 00:00:00 /usr/lib/chromium/chromium ...
camh 10927 5182 10933 0 4 11:07 ? 00:00:00 /usr/lib/chromium/chromium ...
A segunda coluna é o TGID (embora seja rotulado como PID) e a quarta coluna é LWP (processo leve).
$ ls /proc | grep 10927
10927
$ ls /proc | grep 10929
$ cd /proc/10929
$ head -n 5 status
Name: Chrome_ChildIOT
State: S (sleeping)
Tgid: 10927
Pid: 10929
PPid: 5182
Você pode ver que o processo 10929 não aparece em /proc
, mas você pode cd
para ele. Se você olhar no arquivo status
, verá que ele faz parte do "processo" (grupo de encadeamentos) 10927 e, da saída acima, esse processo aparece em /proc
.