进程ID的最大值是多少?
另外,是否可以更改进程ID?
进程ID的最大值是多少?
另外,是否可以更改进程ID?
Answers:
在Linux上,您可以通过以下方法找到系统的最大PID值:
$ cat /proc/sys/kernel/pid_max
也可以使用同一文件写入该值,但是对于32位系统,该值只能扩展到理论最大值32768,对于64位,则可以扩展为4194304:
$ echo 32768 > /proc/sys/kernel/pid_max
在大多数64位系统上,将此值设置为与32位系统上相同的值似乎是一种规范做法,但这是惯例,而不是要求。
来自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).
不,您不能更改正在运行的进程的PID。在进程启动时,它由内核分配为顺序号,这是从那时起的标识符。要获得一个新进程,您唯一可以做的就是让您的代码派生一个新进程并终止旧进程。
其他答案已经说明
/proc/sys/kernel/pid_max
对于Linux和但是问题并没有指定操作系统。所以这是其他一些:
pidmax
in /etc/system
,该参数的缺省值为30,000,可以在266到999,999之间设置。请注意,这不是max_nprocs
,这是功能稍有不同的内核可调参数。process_id_min
并process_id_max
规定了允许的进程ID的范围。在FreeBSD上,根据intro(2)
(链接),PID的值在0到99999之间。这是手册中的一句话:
进程ID。
系统中的每个活动进程均由称为进程ID的非负整数唯一标识。此ID的范围是0到99999。
如果您想自己阅读源代码,则PID_MAX
在sys/sys/proc.h
(link)中定义。