Se digitarmos ps -ef
, obteremos uma lista de processos. Por que os números PID não são contínuos?
Se digitarmos ps -ef
, obteremos uma lista de processos. Por que os números PID não são contínuos?
Respostas:
No Ubuntu, eles são contínuos. Em outros sistemas operacionais, pode ser diferente.
O kernel aloca PIDs no intervalo de (RESERVED_PIDS, PID_MAX_DEFAULT). Isso é feito sequencialmente em cada espaço para nome (tarefas em diferentes espaços para nome podem ter os mesmos IDs). No caso de o alcance se esgotar, a atribuição de pid será concluída.
( /programming/3446727/how-does-linux-determine-the-next-pid )
Mente embora ...
Alguns tópicos sobre stackoverflow:
Nos comentários, há um comando para testar a atribuição de PIDs:
for i in {1..20}; do sh -c 'echo $$'; done
Normalmente, o PID é contínuo, mas algum processo estará morto no momento em que você executar o comando ps -ef
.
Além disso, alguns processos podem ser apenas um subprocesso de outro processo que não é mostrado no ps -ef
comando. Para ver algum resultado expandido e você pode verificar o PID contínuo, use opstree
pstree -p
Saída de amostra:
├─teamviewerd(3468)─┬─{teamviewerd}(3474)
│ ├─{teamviewerd}(3475)
│ ├─{teamviewerd}(3476)
│ ├─{teamviewerd}(3477)
│ ├─{teamviewerd}(3478)
enquanto que, se você executar, ps -ef
verá o processo pai.
$ ps -ef | grep teamviewerd
root 3468 1 0 Jul15 ? 00:07:38 /opt/teamviewer9/tv_bin/teamviewerd -f