¿Cuál es el valor máximo del ID de proceso?
Además, ¿es posible cambiar un ID de proceso?
Respuesta aceptada:
En Linux, puede encontrar el valor PID máximo para su sistema con esto:
$ cat /proc/sys/kernel/pid_max
Este valor también se puede escribir usando el mismo archivo, sin embargo, el valor solo se puede extender hasta un máximo teórico de 32768 para sistemas de 32 bits o 4194304 para sistemas de 64 bits:
$ echo 32768 > /proc/sys/kernel/pid_max
Parece ser una práctica normativa en la mayoría de los sistemas de 64 bits establecer este valor en el mismo valor que se encuentra en los sistemas de 32 bits, pero esto es más una convención que un requisito.
De man 5 proc
:
/proc/sys/kernel/pid_max This file (new in Linux 2.5) specifies the value at which PIDs wrap around (i.e., the value in this file is one greater than the maximum PID). The default value for this file, 32768, results in the same range of PIDs as on earlier kernels. On 32-bit platfroms, 32768 is the maximum value for pid_max. On 64-bit systems, pid_max can be set to any value up to 2^22 (PID_MAX_LIMIT, approximately 4 million).
Y no, no puede cambiar el PID de un proceso en ejecución. El núcleo lo asigna como un número secuencial en el momento en que comienza el proceso y ese es su identificador a partir de ese momento. Lo único que podría hacer para obtener uno nuevo es hacer que su código bifurque un nuevo proceso y finalice el antiguo.