linux - usuario - Sobre el pid del proceso
ver procesos corriendo en linux (7)
A continuación, le mostramos cómo probar lo que hace su sistema:
for i in $(seq 20); do ps; done | grep ps
Los PID de los comandos "ps" son procesos consecutivos, o tan próximos a la consecutiva como cualquier otro llamador podría razonablemente esperar generar.
Mi terminal cygwin en Windows los asigna aleatoriamente, mi servidor web los asigna de forma secuencial (con brechas ocasionales que presumiblemente son para procesos ejecutados por otros usuarios o servidores).
Algunos consideran que la asignación secuencial de PID es un pequeño problema de seguridad posible, ya que puede filtrar información entre los usuarios de un sistema multiusuario.
Tengo una pregunta algo tonta, si tengo una serie de procesos que se crean ... estos no son necesariamente algún tipo de herencia, los pid de los procesos tienen que ser números continuos o picos aleatorios.
Depende de su plataforma, pero no debe depender de ningún pedido específico para su pid.
En Windows, los PID generalmente se asignan en números crecientes, pero a medida que los procesos salen, los PID pueden reciclarse y verá casos en los que un proceso más nuevo tiene un PID más bajo que un proceso anterior. Además, los pid provienen del mismo espacio de nombres que tid, por lo que no verá que pid aumenta en 4 a medida que inicia nuevos procesos.
Desde su perspectiva, serán aleatorios. El sistema administra esos números y los asigna a medida que se crean los procesos. Una mirada rápida a los PID actualmente en mi sistema muestra que todos son divisibles por 4 ...
En AIX, a menudo verá PID más grandes (por ejemplo, 7 dígitos) y no están asignados necesariamente de forma secuencial (aunque parecía que estaba ciclando en incrementos de 2 cuando probé; había otro usuario en la máquina, por lo que puede no significa mucho).
Inicio de sesión nuevo en una máquina AIX 5.3:
$ ps
PID TTY TIME CMD
1060910 pts/27 0:00 -ksh
1155224 pts/27 0:00 ps
$
En Linux, los pids generalmente se asignan de forma secuencial a nivel de todo el sistema, pero se envuelven periódicamente, y puede haber "lagunas" causadas por otros procesos no relacionados. En un caso extremo, es posible que tenga un "espacio" lo suficientemente amplio como para causar este envolvimiento. Por lo tanto, no asuma ningún pedido en particular, sino que haga un seguimiento explícito de los PID de sus procesos primarios o secundarios.
Esto está determinado por el sistema operativo.
En general, usualmente son asignados secuencialmente por el sistema operativo. Sin embargo, este comportamiento no es algo sobre lo que basar decisiones, ya que la mayoría de las especificaciones del sistema operativo indican que la asignación de ID de proceso no es determinista (es decir: podría ser aleatoria y podría cambiar en una versión futura, etc.).
Si está creando esos hijos, sabrá el pid, el pid depende del programador del sistema operativo, no le importan estas cosas.